Як працює кодування URL

URL кодування здається простим, але має нюанси, які можуть спричинити баги, якщо їх неправильно зрозуміти. Цей посібник пояснює механіку.

Percent-Encoding

Серце URL кодування - це percent-encoding. Символи кодуються як знак відсотка з двома шестнадцятковими цифрами.

Процес: Візьміть символ, який потрібно закодувати. Отримайте його байтове представлення UTF-8. Перетворіть кожен байт у шестнадцяткове. Додайте префікс кожного байту з %.

Приклад: Пробіл (ASCII 32, hex 20) → %20. Символ @ (ASCII 64, hex 40) → %40. Символ і (Cyrillic, UTF-8: D1 96) → %D1%96.

Багатобайтові символи створюють кілька %XX послідовностей. Українське "Київ" стає чотирма символами Unicode, але багато більше байтів UTF-8, що призводить до довгої закодованої послідовності.

Зарезервовані символи

Деякі символи зарезервовані в URL синтаксисі і мають спеціальні значення: : / ? # [ ] @ ! $ & ' ( ) * + , ; =

Якщо ці символи з'являються як дані (не синтаксис), їх потрібно кодувати: ? у даних → %3F, & у даних → %26, # у даних → %23, пробіл у даних → %20 (або + у запитах).

Контекст має значення. У example.com/path?param=value, символи ? та = є синтаксисом (не кодуйте). Але якщо value містить ?, воно повинно бути закодовано: param=%3Fvalue.

Спробувати інструмент

URL Encoder/Decoder

URL Encoder/Decoder