Онлайн-інструмент для ескейпінгу спеціальних символів у рядку URL. Введіть URL, і цей інструмент закодує його, ескейпуючи спеціальні символи, що забезпечить його безпечне використання у веб-додатках.
У сфері веб-розробки та Інтернет-комунікацій URL (Універсальний Ресурсний Локатор) відіграє важливу роль у ідентифікації ресурсів в Інтернеті. Однак URL мають обмеження на символи, які вони можуть містити. Деякі символи мають спеціальні значення, тоді як інші небезпечні для використання в URL через можливість неправильного тлумачення або пошкодження під час передачі.
Кодування URL, також відоме як кодування з використанням відсотків, є механізмом перетворення спеціальних символів у формат, який можна передавати через Інтернет. Цей інструмент дозволяє вам ввести рядок URL і кодувати спеціальні символи, забезпечуючи, щоб URL був дійсним і міг бути правильно інтерпретований веб-браузерами та серверами.
Кодування URL передбачає заміну небезпечних ASCII-символів на %
, за яким слідують дві шістнадцяткові цифри, що представляють ASCII-код символу. Це гарантує, що інформація передається через Інтернет без змін.
Наприклад, символ пробілу ' '
замінюється на %20
.
URL можуть бути надіслані через Інтернет лише за допомогою набору символів ASCII. Оскільки URL часто містять символи поза цим набором, їх потрібно перетворити в дійсний ASCII-формат. Кодування URL гарантує, що спеціальні символи не викликають небажаних ефектів або помилок у веб-запитах.
Згідно з специфікацією RFC 3986, наступні символи зарезервовані в URL і повинні бути закодовані відсотками, якщо їх використовують буквально:
:
, /
, ?
, #
, [
, ]
, @
!
, $
, &
, '
, (
, )
, *
, +
, ,
, ;
, =
Крім того, будь-які не ASCII-символи, включаючи символи в Unicode, повинні бути закодовані.
Визначити спеціальні символи:
Проаналізуйте рядок URL і визначте символи, які не є некерованими ASCII-символами (літери, цифри, -
, .
, _
, ~
).
Перетворити в ASCII-код: Для кожного спеціального символу отримайте його ASCII або Unicode код.
Перетворити в байтову послідовність UTF-8 (якщо необхідно): Для не ASCII-символів закодуйте символ у один або кілька байтів за допомогою кодування UTF-8.
Перетворити в шістнадцятковий формат: Перетворіть кожен байт на його двозначний шістнадцятковий еквівалент.
Додати символ відсотка:
Додайте перед кожним шістнадцятковим байтом символ %
.
Символ: ' '
(Пробіл)
32
20
%20
Символ: 'é'
0xC3 0xA9
%C3%A9
Символи Unicode: Не ASCII-символи повинні бути закодовані в UTF-8, а потім закодовані відсотками.
Вже закодовані знаки відсотка: Знаки відсотка, які є частиною кодувань відсотками, не повинні бути повторно закодовані.
Зарезервовані символи в рядках запитів: Деякі символи мають спеціальні значення в рядках запитів і повинні бути закодовані, щоб запобігти змінам структури.
Декодування URL є зворотним процесом кодування URL. Воно перетворює закодовані відсотками символи назад у їх початкову форму, роблячи URL читабельними та зрозумілими для людей і систем.
Визначити послідовності кодування відсотками:
Знайдіть усі символи %
, за якими слідують дві шістнадцяткові цифри в рядку URL.
Перетворити шістнадцятковий у байти: Перекладіть кожне шістнадцяткове значення на відповідний байт.
Декодувати байти UTF-8 (якщо необхідно): Для багатобайтових послідовностей об'єднайте байти та декодуйте їх за допомогою кодування UTF-8, щоб отримати початковий символ.
Замінити закодовані послідовності: Замініть закодовані відсотками послідовності на декодовані символи.
Закодовано: hello%20world
%20
перекладається на пробіл ' '
hello world
Закодовано: J%C3%BCrgen
%C3%A4
перекладається на 'ü'
в UTF-8Jürgen
Декодування URL є важливим при обробці вводу користувача з URL, читанні параметрів запиту або інтерпретації даних, отриманих з веб-запитів. Це гарантує, що інформація, витягнута з URL, має свою належну, заплановану форму.
Параметри запиту: Кодування вводу користувача в параметрах запиту для запобігання помилок або вразливостей безпеки.
Параметри шляху: Безпечне включення динамічних даних у URL-шляхи.
API та веб-сервіси: Забезпечення правильного формату даних, що надсилаються до API.
Міжнародна підтримка: Підтримка URL з символами з різних мов.
Хоча кодування URL є важливим, існують сценарії, коли інші методи кодування можуть бути більш доречними:
Кодування Base64: Використовується для кодування двійкових даних у URL або коли потрібна більша щільність інформації.
Кодування UTF-8 без кодування відсотками: Деякі системи використовують безпосереднє кодування UTF-8, але це може призвести до проблем, якщо не обробляти належним чином.
Розгляньте специфіку вашого застосування, щоб вибрати найбільш підходящий метод кодування.
Кодування URL було введено з ранніми специфікаціями стандартів URL та URI (Універсальний Ресурсний Ідентифікатор) у 1990-х роках. Потреба в послідовному способі кодування спеціальних символів виникла через різноманітні системи та набори символів, що використовуються у всьому світі.
Ключові етапи включають:
RFC 1738 (1994): Визначив URL і ввів кодування відсотками.
RFC 3986 (2005): Оновив синтаксис URI, уточнивши правила кодування.
З часом кодування URL стало невід'ємною частиною веб-технологій, забезпечуючи надійну комунікацію між різними системами та платформами.
Ось приклади того, як виконати кодування URL на різних мовах програмування:
1' Приклад Excel VBA
2Function URLEncode(ByVal Text As String) As String
3 Dim i As Integer
4 Dim CharCode As Integer
5 Dim Char As String
6 Dim EncodedText As String
7
8 For i = 1 To Len(Text)
9 Char = Mid(Text, i, 1)
10 CharCode = AscW(Char)
11 Select Case CharCode
12 Case 48 To 57, 65 To 90, 97 To 122, 45, 46, 95, 126 ' 0-9, A-Z, a-z, -, ., _, ~
13 EncodedText = EncodedText & Char
14 Case Else
15 If CharCode < 0 Then
16 ' Обробка символів Unicode
17 EncodedText = EncodedText & "%" & Hex(65536 + CharCode)
18 Else
19 EncodedText = EncodedText & "%" & Right("0" & Hex(CharCode), 2)
20 End If
21 End Select
22 Next i
23 URLEncode = EncodedText
24End Function
25
26' Використання:
27' =URLEncode("https://example.com/?name=Jürgen")
28
1% Приклад MATLAB
2function encodedURL = urlEncode(url)
3 import java.net.URLEncoder
4 encodedURL = char(URLEncoder.encode(url, 'UTF-8'));
5end
6
7% Використання:
8% encodedURL = urlEncode('https://example.com/?name=Jürgen');
9
1## Приклад Ruby
2require 'uri'
3
4url = 'https://example.com/path?query=hello world&name=Jürgen'
5encoded_url = URI::DEFAULT_PARSER.escape(url)
6puts encoded_url
7## Вихід: https://example.com/path?query=hello%20world&name=J%C3%BCrgen
8
1// Приклад Rust
2use url::form_urlencoded;
3
4fn main() {
5 let url = "https://example.com/path?query=hello world&name=Jürgen";
6 let encoded_url = percent_encode(url);
7 println!("{}", encoded_url);
8 // Вихід: https://example.com/path%3Fquery%3Dhello%20world%26name%3DJ%C3%BCrgen
9}
10
11fn percent_encode(input: &str) -> String {
12 use percent_encoding::{utf8_percent_encode, NON_ALPHANUMERIC};
13 utf8_percent_encode(input, NON_ALPHANUMERIC).to_string()
14}
15
1## Приклад Python
2import urllib.parse
3
4url = 'https://example.com/path?query=hello world&name=Jürgen'
5encoded_url = urllib.parse.quote(url, safe=':/?&=')
6print(encoded_url)
7## Вихід: https://example.com/path?query=hello%20world&name=J%C3%BCrgen
8
1// Приклад JavaScript
2const url = 'https://example.com/path?query=hello world&name=Jürgen';
3const encodedURL = encodeURI(url);
4console.log(encodedURL);
5// Вихід: https://example.com/path?query=hello%20world&name=J%C3%BCrgen
6
1// Приклад Java
2import java.net.URLEncoder;
3import java.nio.charset.StandardCharsets;
4
5public class URLEncodeExample {
6 public static void main(String[] args) throws Exception {
7 String url = "https://example.com/path?query=hello world&name=Jürgen";
8 String encodedURL = URLEncoder.encode(url, StandardCharsets.UTF_8.toString());
9 // Заміна "+" на "%20" для пробілів
10 encodedURL = encodedURL.replace("+", "%20");
11 System.out.println(encodedURL);
12 // Вихід: https%3A%2F%2Fexample.com%2Fpath%3Fquery%3Dhello%20world%26name%3DJ%C3%BCrgen
13 }
14}
15
1// Приклад C#
2using System;
3using System.Net;
4
5class Program
6{
7 static void Main()
8 {
9 string url = "https://example.com/path?query=hello world&name=Jürgen";
10 string encodedURL = Uri.EscapeUriString(url);
11 Console.WriteLine(encodedURL);
12 // Вихід: https://example.com/path?query=hello%20world&name=J%C3%BCrgen
13 }
14}
15
1<?php
2// Приклад PHP
3$url = 'https://example.com/path?query=hello world&name=Jürgen';
4$encodedURL = urlencode($url);
5echo $encodedURL;
6// Вихід: https%3A%2F%2Fexample.com%2Fpath%3Fquery%3Dhello+world%26name%3DJ%C3%BCrgen
7?>
8
1// Приклад Go
2package main
3
4import (
5 "fmt"
6 "net/url"
7)
8
9func main() {
10 urlStr := "https://example.com/path?query=hello world&name=Jürgen"
11 encodedURL := url.QueryEscape(urlStr)
12 fmt.Println(encodedURL)
13 // Вихід: https%3A%2F%2Fexample.com%2Fpath%3Fquery%3Dhello+world%26name%3DJ%25C3%25BCrgen
14}
15
1// Приклад Swift
2import Foundation
3
4let url = "https://example.com/path?query=hello world&name=Jürgen"
5if let encodedURL = url.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed) {
6 print(encodedURL)
7 // Вихід: https://example.com/path?query=hello%20world&name=J%C3%BCrgen
8}
9
1## Приклад R
2url <- "https://example.com/path?query=hello world&name=Jürgen"
3encodedURL <- URLencode(url, reserved = TRUE)
4print(encodedURL)
5## Вихід: https://example.com/path?query=hello%20world&name=J%C3%BCrgen
6
Примітка: Вихід може трохи відрізнятися залежно від того, як кожна мова обробляє зарезервовані символи та пробіли (наприклад, кодування пробілів як %20
або +
).
Правильне кодування та декодування URL є критично важливими для безпеки:
Запобігання атакам на впровадження: Кодування вводу користувача допомагає запобігти виконанню шкідливого коду, зменшуючи ризики, такі як міжсайтовий скриптинг (XSS) та SQL-впровадження.
Цілісність даних: Гарантує, що дані передаються без змін або пошкоджень.
Відповідність стандартам: Дотримання стандартів кодування запобігає проблемам з сумісністю між системами.
Кодування URL є важливим аспектом веб-розробки та Інтернет-комунікацій. Перетворюючи спеціальні символи в безпечний формат, воно гарантує, що URL правильно інтерпретується браузерами та серверами, підтримуючи цілісність і безпеку передачі даних. Цей інструмент забезпечує зручний спосіб кодування спеціальних символів у ваших URL, підвищуючи сумісність і запобігаючи потенційним помилкам або вразливостям безпеки.