Кодування
URL Encode/Decode
Кодування та декодування URL — символи, які потрібно екранувати в посиланнях і параметрах запиту.
URL-кодування (percent-encoding) замінює символи, недопустимі в URL — пробіли, кирилицю, спецсимволи — на послідовності виду %XX, де XX — шістнадцятковий код байта. Це потрібно, щоб посилання й параметри запиту передавались без спотворень.
Як користуватися
- Кодування: вставте текст або URL — символи поза допустимим набором ASCII будуть замінені на %XX-послідовності.
- Декодування: вставте закодований рядок, щоб побачити оригінальний текст.
- Для кодування всього URL і для кодування окремого параметра запиту використовуються трохи різні набори символів — інструмент дозволяє обрати потрібний режим.
Типові сценарії
- Формування query-параметрів із текстом, що містить пробіли, амперсанди чи кирилицю.
- Діагностика, чому посилання з параметром ламається — часто причина саме в незакодованих спецсимволах.
- Декодування URL зі сторонніх систем для читання їх у первинному вигляді.
Що варто памʼятати
Кодувати потрібно значення параметрів, а не весь URL цілком — інакше буде закодовано й потрібні роздільники (:, /, ?, &).
JavaScript-функції encodeURIComponent і encodeURI кодують різні набори символів — перша призначена саме для значень параметрів.
Стаття про цей інструмент: URL Encode/Decode: percent-encoding у посиланнях
Часті запитання
Чим URL-кодування відрізняється від Base64?
Це різні речі: URL-кодування (percent-encoding) замінює лише спецсимволи на послідовності виду %XX і залишає більшість тексту читабельним, а Base64 перетворює всі дані у власний алфавіт з 64 символів. Іноді Base64 додатково роблять "URL-safe", але це не робить його URL-кодуванням.
Чим відрізняються режими "Компонент" і "URI"?
encodeURIComponent (Компонент) екранує майже всі спецсимволи, включно з /, ?, & і #, тому підходить для значення окремого параметра запиту. encodeURI (URI) не чіпає символи, які мають структурне значення в адресі — /, ?, #, : та інші, — бо призначений для кодування цілого URL.
Чи безпечно вставляти конфіденційні дані в цей інструмент?
Так — кодування й декодування виконуються повністю у вашому браузері за допомогою JavaScript. Дані ніколи не надсилаються на сервер.
Що таке подвійне кодування і як його розпізнати?
Це помилка, коли вже закодований рядок кодують ще раз — символ % сам перетворюється на %25, і %20 стає %2520. Ознака проблеми — послідовності виду %25XX у декодованому результаті.
Чому пробіл іноді кодується як +, а іноді як %20?
+ для пробілу — це формат application/x-www-form-urlencoded, який використовують форми та query-рядки. %20 — це стандартний percent-encoding з RFC 3986, коректний у будь-якій частині URL.