Онлайн-інструмент для ескейпінгу рядків URL
Онлайн-інструмент для ескейпінгу спеціальних символів у рядку URL. Введіть URL, і цей інструмент закодує його, ескейпуючи спеціальні символи, що забезпечить його безпечне використання у веб-додатках.
Експрес-інструмент для кодування URL
Документація
Інструмент для кодування URL-адрес
Вступ
У сфері веб-розробки та Інтернет-комунікацій URL (Універсальний Ресурсний Локатор) відіграє важливу роль у ідентифікації ресурсів в Інтернеті. Однак URL мають обмеження на символи, які вони можуть містити. Деякі символи мають спеціальні значення, тоді як інші небезпечні для використання в URL через можливість неправильного тлумачення або пошкодження під час передачі.
Кодування URL, також відоме як кодування з використанням відсотків, є механізмом перетворення спеціальних символів у формат, який можна передавати через Інтернет. Цей інструмент дозволяє вам ввести рядок URL і кодувати спеціальні символи, забезпечуючи, щоб URL був дійсним і міг бути правильно інтерпретований веб-браузерами та серверами.
Розуміння кодування URL
Що таке кодування URL?
Кодування URL передбачає заміну небезпечних ASCII-символів на %
, за яким слідують дві шістнадцяткові цифри, що представляють ASCII-код символу. Це гарантує, що інформація передається через Інтернет без змін.
Наприклад, символ пробілу ' '
замінюється на %20
.
Чому необхідне кодування URL?
URL можуть бути надіслані через Інтернет лише за допомогою набору символів ASCII. Оскільки URL часто містять символи поза цим набором, їх потрібно перетворити в дійсний ASCII-формат. Кодування URL гарантує, що спеціальні символи не викликають небажаних ефектів або помилок у веб-запитах.
Символи, які потребують кодування
Згідно з специфікацією RFC 3986, наступні символи зарезервовані в URL і повинні бути закодовані відсотками, якщо їх використовують буквально:
- Загальні роздільники:
:
,/
,?
,#
,[
,]
,@
- Підроздільники:
!
,$
,&
,'
,(
,)
,*
,+
,,
,;
,=
Крім того, будь-які не ASCII-символи, включаючи символи в Unicode, повинні бути закодовані.
Як працює кодування URL?
Процес кодування
-
Визначити спеціальні символи: Проаналізуйте рядок URL і визначте символи, які не є некерованими ASCII-символами (літери, цифри,
-
,.
,_
,~
). -
Перетворити в ASCII-код: Для кожного спеціального символу отримайте його ASCII або Unicode код.
-
Перетворити в байтову послідовність UTF-8 (якщо необхідно): Для не ASCII-символів закодуйте символ у один або кілька байтів за допомогою кодування UTF-8.
-
Перетворити в шістнадцятковий формат: Перетворіть кожен байт на його двозначний шістнадцятковий еквівалент.
-
Додати символ відсотка: Додайте перед кожним шістнадцятковим байтом символ
%
.
Приклад кодування
-
Символ:
' '
(Пробіл)- ASCII-код:
32
- Шістнадцятковий:
20
- Закодований URL:
%20
- ASCII-код:
-
Символ:
'é'
- Кодування UTF-8:
0xC3 0xA9
- Закодований URL:
%C3%A9
- Кодування UTF-8:
Крайні випадки, які потрібно врахувати
-
Символи Unicode: Не ASCII-символи повинні бути закодовані в UTF-8, а потім закодовані відсотками.
-
Вже закодовані знаки відсотка: Знаки відсотка, які є частиною кодувань відсотками, не повинні бути повторно закодовані.
-
Зарезервовані символи в рядках запитів: Деякі символи мають спеціальні значення в рядках запитів і повинні бути закодовані, щоб запобігти змінам структури.
Декодування URL
Що таке декодування URL?
Декодування URL є зворотним процесом кодування URL. Воно перетворює закодовані відсотками символи назад у їх початкову форму, роблячи URL читабельними та зрозумілими для людей і систем.
Процес декодування
-
Визначити послідовності кодування відсотками: Знайдіть усі символи
%
, за якими слідують дві шістнадцяткові цифри в рядку URL. -
Перетворити шістнадцятковий у байти: Перекладіть кожне шістнадцяткове значення на відповідний байт.
-
Декодувати байти UTF-8 (якщо необхідно): Для багатобайтових послідовностей об'єднайте байти та декодуйте їх за допомогою кодування UTF-8, щоб отримати початковий символ.
-
Замінити закодовані послідовності: Замініть закодовані відсотками послідовності на декодовані символи.
Приклад декодування
-
Закодовано:
hello%20world
%20
перекладається на пробіл' '
- Декодовано:
hello world
-
Закодовано:
J%C3%BCrgen
%C3%A4
перекладається на'ü'
в UTF-8- Декодовано:
Jürgen
Важливість декодування URL
Декодування URL є важливим при обробці вводу користувача з URL, читанні параметрів запиту або інтерпретації даних, отриманих з веб-запитів. Це гарантує, що інформація, витягнута з URL, має свою належну, заплановану форму.
Сценарії використання
Веб-розробка
-
Параметри запиту: Кодування вводу користувача в параметрах запиту для запобігання помилок або вразливостей безпеки.
-
Параметри шляху: Безпечне включення динамічних даних у URL-шляхи.
Передача даних
-
API та веб-сервіси: Забезпечення правильного формату даних, що надсилаються до API.
-
Міжнародна підтримка: Підтримка URL з символами з різних мов.
Безпека
- Запобігання атакам на впровадження: Кодування вводу для зменшення ризику міжсайтового скриптингу (XSS) та інших атак на впровадження.
Альтернативи
Хоча кодування 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
або +
).
SVG-діаграма процесу кодування URL
Заходи безпеки
Правильне кодування та декодування URL є критично важливими для безпеки:
-
Запобігання атакам на впровадження: Кодування вводу користувача допомагає запобігти виконанню шкідливого коду, зменшуючи ризики, такі як міжсайтовий скриптинг (XSS) та SQL-впровадження.
-
Цілісність даних: Гарантує, що дані передаються без змін або пошкоджень.
-
Відповідність стандартам: Дотримання стандартів кодування запобігає проблемам з сумісністю між системами.
Посилання
- RFC 3986 - Універсальний Ресурсний Ідентифікатор (URI): https://tools.ietf.org/html/rfc3986
- Що таке кодування URL і як воно працює? https://www.urlencoder.io/learn/
- Кодування відсотками: https://en.wikipedia.org/wiki/Percent-encoding
- Стандарт URL: https://url.spec.whatwg.org/
- URI.escape застаріло: https://stackoverflow.com/questions/2824126/why-is-uri-escape-deprecated
Висновок
Кодування URL є важливим аспектом веб-розробки та Інтернет-комунікацій. Перетворюючи спеціальні символи в безпечний формат, воно гарантує, що URL правильно інтерпретується браузерами та серверами, підтримуючи цілісність і безпеку передачі даних. Цей інструмент забезпечує зручний спосіб кодування спеціальних символів у ваших URL, підвищуючи сумісність і запобігаючи потенційним помилкам або вразливостям безпеки.
Зворотній зв'язок
Клацніть на спливаюче вікно зворотного зв'язку, щоб почати надавати відгуки про цей інструмент