Кодування / декодування URL
Кодуйте у відсотках або декодуйте складові URL і рядки запиту
Про цей інструмент
Такі символи, як пробіли, амперсанди та нелатинські літери, не можуть стояти в URL у сирому вигляді, тому їх кодують відсотками: пробіл стає %20, а 你 — %E4%BD%A0. Цей інструмент кодує текст для безпечного включення в URL і декодує відсоткові послідовності назад у читабельний текст, включно з домовленістю про + замість пробілу в рядках запиту.
Режимів кодування два, бо їх два і в самому JavaScript: режим компонента (encodeURIComponent) екранує все, що могло б розділити URL, — саме те, що потрібно для одного значення рядка запиту; режим повного URI (encodeURI) зберігає структурні символи /, ? і &, коли ви кодуєте цілий URL, який має лишитися придатним для переходу.
Декодування суворе щодо викривлених послідовностей із % — самотній % або %ZZ повідомляється як помилка, а не пропускається мовчки, і саме так поставляться до них браузери та сервери.
Часті запитання
- Коли використовувати режим компонента, а коли повного URI?
- Кодуєте значення, що піде всередину URL (пошуковий запит, адресу переспрямування, e-mail у параметрі) → режим компонента, щоб & і = всередині значення не зламали рядок запиту. Кодуєте цілий URL для показу чи передавання → режим повного URI, щоб структура URL уціліла.
- Чому + іноді означає пробіл?
- Формат application/x-www-form-urlencoded — його вживають HTML-форми та рядки запиту — історично кодує пробіли як +. У шляхах URL + це просто плюс. Декодер тут трактує + як пробіл, відповідно до семантики рядка запиту; %20 працює завжди й усюди.
- Чому мій рядок закодовано двічі (%2520)?
- %25 — це кодування самого символу %, тож %2520 означає, що текст %20 закодували вдруге. Так стається, коли два шари системи кодують кожен по разу. Натисніть декодування двічі, щоб розгорнути, а тоді полагодьте шар, який кодувати не повинен.
- Чи коректно обробляються символи Unicode?
- Так — текст спершу кодується в UTF-8, а тоді кожен байт екранується відсотком, відповідно до стандарту WHATWG URL. Саме тому один ієрогліф перетворюється на три групи %XX.