Кодування й декодування URL
Безкоштовний кодувальник і декодувальник URL. Кодуйте параметри запиту чи повні URL, декодуйте послідовності %XX і обробляйте + як пробіл. Працює в браузері.
Як користуватися кодувальником і декодувальником URL
- Виберіть Закодувати, щоб перетворити текст на форму, безпечну для URL, або Декодувати, щоб повернути текст із відсотковим кодуванням до читабельних символів.
- Під час кодування виберіть Режим: Компонент для окремого значення (наприклад, параметра запиту чи сегмента шляху) або Повний URL, щоб закодувати цілу адресу, зберігши її структуру.
- Під час декодування даних із форми HTML чи рядка запиту ввімкніть Трактувати + як пробіл, щоб знаки
+стали пробілами. - Вставте текст і скопіюйте результат. Якщо відсоткова послідовність некоректна, інструмент повідомить про помилку, а не вгадуватиме.
Що таке кодування URL?
URL можуть містити лише обмежений набір символів ASCII. Деякі символи, як-от /, ?, #, & та =, зарезервовані, бо розділяють частини адреси: шлях, рядок запиту й фрагмент. Інші, як-от пробіли, лапки, літери з діакритикою чи емодзі, просто не дозволені. Кодування URL, також зване відсотковим кодуванням, розв’язує обидві проблеми, замінюючи кожен проблемний байт на % і дві шістнадцяткові цифри.
Спершу текст перетворюється на байти UTF-8, і кожен байт кодується окремо. Пробіл стає %20, амперсанд – %26, літера é (два байти в UTF-8) – %C3%A9, а емодзі 😀 (чотири байти) – %F0%9F%98%80. Незарезервовані символи, тобто літери, цифри та - _ . ~, кодувати ніколи не потрібно. Українські літери також займають по два байти, тож «ї» перетворюється на %D1%97.
Режим «Компонент» чи «Повний URL»
Вибір правильного режиму – найважливіше рішення, а помилка тут – класичне джерело багів.
Режим «Компонент» працює як encodeURIComponent у JavaScript. Він кодує кожен зарезервований символ, тож результат можна безпечно вставити в одну частину URL. Використовуйте його для значень параметрів запиту, сегментів шляху чи всього, що ввів користувач. Наприклад, пошуковий запит rock & roll стає rock%20%26%20roll. Якби ви не закодували &, сервер прочитав би roll як початок нового параметра.
Режим «Повний URL» працює як encodeURI. Він припускає, що вхідні дані вже є повною адресою, і зберігає символи, що надають їй структуру, як-от : / ? # & та =, кодуючи пробіли й символи не з ASCII. Використовуйте його, щоб привести адресу на кшталт https://example.com/café menu?q=tea до вигляду https://example.com/caf%C3%A9%20menu?q=tea. Не застосовуйте його до окремих значень: & усередині значення лишиться незакодованим і зламає рядок запиту.
Хороше правило: збирайте URL із частин, кодуйте кожне значення в режимі «Компонент» і використовуйте «Повний URL» лише для адрес, які ви отримуєте вже зібраними.
Знак + і кодування форм
Форми HTML, надіслані з application/x-www-form-urlencoded, кодують пробіли як + замість %20. Тому пошукові URL часто виглядають як ?q=hello+world. Стандартне відсоткове декодування залишає + без змін, бо в шляху плюс – це просто плюс. Під час декодування рядка запиту чи даних форми ввімкніть Трактувати + як пробіл, щоб отримати hello world. Залиште вимкненим для шляхів і значень, де важливий буквальний +, як-от номери телефонів чи дані Base64. Справжній знак плюс у даних форми надсилається як %2B, тож у будь-якому разі декодується правильно.
Приватність
Кодування й декодування виконуються цілком у вашому браузері. Нічого з того, що ви вставляєте, зокрема URL, які можуть містити токени, ідентифікатори сеансів чи персональні дані, не надсилається на сервер і не зберігається.
Поширені запитання
Чому декодування завершується помилкою «некоректне кодування»?
Після % мають іти рівно дві шістнадцяткові цифри, а отримані байти мають утворювати коректний UTF-8. Рядки на кшталт 100%, %G1 чи обірвана послідовність %E2%82 не можна надійно декодувати, тому інструмент повідомляє про проблему, а не видає хибний текст. Щоб вставити буквальний знак відсотка, закодуйте його як %25.
Чим відрізняються %20 і +?
Обидва можуть позначати пробіл, але в різних контекстах. %20 дійсний усюди в URL. + означає пробіл лише в рядках запиту, закодованих як форма; в інших місцях це буквальний знак плюс.
Чи варто кодувати цілий URL у режимі «Компонент»?
Лише якщо весь URL сам є значенням усередині іншого URL, наприклад параметром redirect=. У такому разі режим «Компонент» саме те, що треба: https://a.com/?x=1 стає https%3A%2F%2Fa.com%2F%3Fx%3D1.
Чому мій текст закодовано двічі?
Подвійне кодування виникає, коли вже закодований текст кодують знову, і %20 стає %2520. Один раз декодуйте для перевірки й переконайтеся, що кожне значення кодується лише в момент вставлення в URL.
Чи приховує або захищає кодування URL дані?
Ні. Відсоткове кодування повністю оборотне й не забезпечує безпеки. Чутливі значення в URL можуть потрапити в історію браузера та журнали серверів, тому взагалі не розміщуйте секрети в URL.
Схожі інструменти
- Base64: кодер і декодер Безкоштовний кодер і декодер Base64 з повною підтримкою UTF-8 та варіантом base64url для URL. Працює у вашому браузері, нічого не завантажується на сервер.
- Форматувальник і валідатор JSON Безкоштовний форматувальник і валідатор JSON: форматує, мінімізує та перевіряє JSON у браузері й показує помилки синтаксису з рядком і стовпцем.