Як користуватися
- Виберіть кодування або декодування.
- Виберіть «Компонент» для окремого значення (наприклад, параметра запиту) або «Повна URL-адреса» для всієї адреси.
- Введіть або вставте текст. Результат одразу з’явиться праворуч або нижче на телефоні.
- Скопіюйте результат або скористайтеся кнопкою «Використати результат як вхідні дані», щоб виконати зворотну операцію та перевірити результат.
Як це працює
В URL можна використовувати лише обмежений набір символів ASCII. Усі інші символи, зокрема пробіли, літери з діакритичними знаками та емодзі, записують у вигляді відсоткових кодів: символ перетворюється на байти UTF-8, а кожен байт — на знак % і дві шістнадцяткові цифри. Пробіл перетворюється на %20, é — на %C3%A9, а € — на %E2%82%AC.
Режим компонента використовує JavaScript-функції encodeURIComponent і decodeURIComponent. Він кодує всі символи, що мають спеціальне значення в URL, зокрема / ? # & = + : і @, тож результат можна безпечно вставити в значення параметра запиту або окремий сегмент шляху. Без змін залишаються лише A–Z, a–z, 0–9 і - _ . ! ~ * ' ( ).
Режим повної URL-адреси використовує encodeURI і decodeURI. Він розрахований на вже готову URL-адресу й залишає без змін зарезервовані символи ; , / ? : @ & = + $ #, щоб адреса й надалі працювала. Під час декодування decodeURI також не змінює коди цих зарезервованих символів: %2F залишається %2F, оскільки перетворення на / змінило б значення URL.
Параметр даних форми відповідає формату application/x-www-form-urlencoded, який браузери використовують під час надсилання HTML-форм: пробіл записується як +, а не %20. Під час декодування з цим параметром кожен + перетворюється на пробіл; справжній знак плюса потрібно записувати як %2B.
Некоректні дані не видаляються. Якщо після % немає двох шістнадцяткових цифр або послідовність кодів не утворює коректний UTF-8, інструмент покаже, де виникла проблема, і збереже текст, щоб ви могли його виправити.
Приклади
Додавання значення до рядка запиту
Щоб знайти “Rock & Roll” на https://example.com/search?q=…, закодуйте лише значення в режимі компонента: Rock%20%26%20Roll. Без кодування символ & завершив би параметр q і почав новий параметр із назвою “ Roll”.
Виправлення URL із пробілами та діакритичними знаками
У режимі повної URL-адреси https://example.com/menu/crème brûlée.html перетворюється на https://example.com/menu/cr%C3%A8me%20br%C3%BBl%C3%A9e.html. Коса риска й двокрапка залишаються без змін, тож посилання продовжує працювати.
Перегляд даних форми в журналі
У журналі сервера є запис name=Jane+Doe&city=S%C3%A3o+Paulo. Декодуйте його в режимі компонента з увімкненим параметром “Treat + as a space”, щоб отримати name=Jane Doe&city=São Paulo.
Поширені запитання
Чим відрізняються encodeURI та encodeURIComponent?
encodeURIComponent кодує символи, які розділяють частини URL (/ ? # & = + : @ та інші), тому призначений для окремих фрагментів URL. encodeURI залишає ці символи без змін і призначений для повної URL-адреси. Використання encodeURI для значення параметра запиту — поширена помилка: символи & або = у значенні не будуть закодовані й порушать рядок запиту.
Пробіл потрібно записувати як %20 чи +?
У шляху URL пробіл завжди записується як %20. У рядку запиту трапляються обидва варіанти: %20 допустимий усюди, а + означає пробіл лише в даних у форматі application/x-www-form-urlencoded, який використовують HTML-форми та багато серверних фреймворків для обробки рядків запиту. Якщо не впевнені, використовуйте %20.
Чому під час декодування виникає помилка?
Декодування завершується помилкою, якщо після знака % немає двох шістнадцяткових цифр (наприклад, “50% off”) або закодовані байти не утворюють коректний UTF-8. Зазвичай це означає, що текст було закодовано в застарілому кодуванні, наприклад Latin-1 (é як %E9 замість %C3%A9). У повідомленні про помилку вказано позицію проблеми.
Чому %2F не перетворився на косу риску в режимі повної URL-адреси?
decodeURI навмисно залишає закодовані зарезервовані символи, наприклад / ? # & і =, без змін, оскільки їх декодування може змінити поділ URL на частини. Щоб декодувати всі коди, скористайтеся режимом компонента.
Які символи ніколи не кодуються?
Обидва режими залишають без змін A–Z, a–z, 0–9 і - _ . ! ~ * ' ( ). У режимі повної URL-адреси також не кодуються ; , / ? : @ & = + $ і #.
Конфіденційність
Кодування й декодування відбуваються безпосередньо у вашому браузері за допомогою вбудованих функцій JavaScript. Текст і URL-адреси не надсилаються на сервер, не зберігаються й не потрапляють в аналітику.