§

Введіть текст для декодування:

Введіть URL-закодований текст для декодування. Інструмент перетворить відсотково-закодовані символи назад до їхньої оригінальної форми.
§

Output

decoded

Декодування відсотково-закодованих URL — щоденне завдання для розробників: розбирання `utm_`-параметрів Google Analytics 4, розплутування webhook-корисних навантажень, читання значення `state` при редіректі OAuth 2.0, або аудит шкідливого навантаження у заголовках HTTP. Цей клієнтський декодер дотримується RFC 3986 і ніколи не передає введення, що важливо, коли URL сам є частиною розслідуваного інциденту.

Розширені параметри

Конвертувати + в пробіли

Коли увімкнено, символи + будуть конвертовані в пробіли. Це корисно при декодуванні параметрів запиту.

Живий режим

Коли увімкнено, текст буде декодуватися автоматично під час введення.

Ці параметри допоможуть вам контролювати, як закодовані символи декодуються у ваших URL.

Що таке URL-декодування?

URL-декодування скасовує відсоткове кодування: воно читає %XX-екранування в закодованому URL і перетворює їх назад на символи, які вони позначають. Так ви відновлюєте зрозумілий рядок запиту, значення форми або сегмент шляху з URL, який браузер, API або рядок журналу передав вам у закодованому вигляді.

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

URL-декодування дотримується певного процесу для конвертації відсотково-закодованих послідовностей назад до їхніх оригінальних символів:

  1. Вхідний рядок сканується на наявність відсотково-закодованих екранувань (%XX)
  2. Кожен %XX конвертується з двох шістнадцяткових цифр назад до оригінального байтового значення
  3. Послідовні декодовані байти збираються назад у символи UTF-8 (багатобайтова послідовність стає одним символом)
  4. У контексті рядка запиту + декодується до пробілу (application/x-www-form-urlencoded), тоді як %2B залишається буквальним +
  5. Незарезервовані символи та вже декодований текст проходять без змін

Навіщо використовувати URL-декодер?

  • Зрозумілий вивід: перетворюйте %20, %40 та %3D назад у пробіли, @ та =, щоб читати, що насправді написано в URL
  • Міжнародний текст: відновлюйте акцентовані та не-ASCII символи з їхніх UTF-8 байтових послідовностей, щоб %C3%A9 знову читалося як é
  • Налагодження: перевіряйте реальні значення всередині рядка запиту, редіректу OAuth або webhook-корисного навантаження перед їхнім використанням
  • Стандартна відповідність: декодування за RFC 3986, тими самими правилами, що використовують браузери та сервери, тому ви бачите саме те, що бачать вони

Які поширені застосування URL-декодування?

URL-декодування є необхідним у багатьох сценаріях веб-розробки:

  • Відправка форм: читання оригінальних значень полів з даних GET та POST у форматі application/x-www-form-urlencoded
  • Розробка API: розпакування відсотково-закодованих параметрів шляху та запиту, що надходять до кінцевої точки API
  • Файлові системи: відновлення шляхів до файлів та їхніх назв, що були відсотково-закодовані для передачі всередині URL
  • Налагодження посилань: декодування спільних або зареєстрованих URL для перегляду спеціальних символів та міжнародного тексту, які вони містять

Як виглядає приклад URL-декодування?

Ось кілька поширених прикладів URL-декодування: %20 (або +) стає пробілом, %40 стає @, %23 стає #, %26 стає &, а %3D стає =. Послідовність UTF-8 на кшталт %C3%A9 стає міжнародним символом é.

Що таке відсоткове кодування?

Відсоткове кодування — це механізм, визначений RFC 3986 §2.1, для представлення символів, що є небезпечними або зарезервованими всередині URI. Правило є механічним: кожен байт, що не може з'явитися буквально, записується як знак відсотка, за яким слідують дві шістнадцяткові цифри — форма %XX — де XX — значення байта. Не-ASCII символи на кшталт é спочатку кодуються як їхня UTF-8 байтова послідовність, потім кожен байт кодується відсотками окремо.

Як насправді відбувається декодування %C3%A9 в é?

Візьмемо закодований рядок запиту ?q=caf%C3%A9&lang=fr. Декодування дає ?q=café&lang=fr. Ось покроковий розбір по байтах:

  • Введення: ?q=caf%C3%A9&lang=fr
  • Результат: ?q=café&lang=fr
  1. %C3 → байт 0xC3 (двійковий 11000011) — провідний байт двобайтової UTF-8 послідовності.
  2. %A9 → байт 0xA9 (двійковий 10101001) — байт продовження. Разом, C3 A9 є UTF-8 кодуванням U+00E9, що є é.
  3. Символи ?, = та & залишаються незміненими, оскільки вони є структурними — вони розмежовують запит та його пари ключ/значення. Буквальний caf також передається без змін, оскільки малі ASCII-літери належать до незарезервованого набору.

У чому різниця між decodeURIComponent та decodeURI?

JavaScript надає два вбудованих декодери, і їхня плутанина є однією з найпоширеніших помилок обробки URL:

  • decodeURIComponent(str) декодує кожну відсотково-закодовану послідовність, включаючи зарезервовані символи на кшталт &, =, ?, / та #. Використовуйте його на окремих значеннях рядка запиту або сегментах шляху — ніколи на цілому URL.
  • decodeURI(str) навмисно консервативний: він пропускає зарезервовані символи. Якщо подати йому %26, він поверне буквальний рядок %26, а не &. Він призначений для цілих URI, де ви хочете, щоб структура збереглася при зворотному перетворенні.

Практичне правило: якщо рядок є частиною URL (окремий параметр, фрагмент, закодоване ім'я файлу), використовуйте decodeURIComponent. Цей інструмент поводиться як decodeURIComponent — кожна послідовність %XX у вашому введенні декодується, включаючи зарезервовані символи.

Декодування URL — це спосіб прочитати, що він насправді містить. Вставте закодований рядок вище, і кожна послідовність %XX перетвориться назад у свій символ прямо у вашому браузері, щоб ви могли налагодити параметр запиту, перевірити редірект OAuth або відновити акцентоване ім'я файлу без відправки чогось на сервер.