Как декодировать строку, закодированную для URL
Декодирование обращает процентное кодирование: каждая последовательность %XX становится байтом, а байты читаются как текст UTF-8. Режим «Компонент» использует decodeURIComponent(), поэтому результат в точности совпадает с исходным значением.
Разобранный пример
Многобайтовые последовательности UTF-8 превращаются в один символ.
- Ввод
- caf%C3%A9%20%26%20cr%C3%A8me
- Результат ·
decodeURIComponent() - café & crème
%20 становится пробелом, а + сохраняется как обычный знак плюса.
- Ввод
- a+b%20c
- Результат ·
decodeURIComponent() - a+b c
В последней последовательности не хватает шестнадцатеричной цифры, поэтому инструмент показывает ошибку.
- Ввод
- %E0%A4%A
- Результат ·
decodeURIComponent() - Недопустимый закодированный URL
После восстановления цифры три байта дают одну букву деванагари.
- Ввод
- %E0%A4%A4
- Результат ·
decodeURIComponent() - त
Как это обрабатывает инструмент
- Каждая последовательность %XX — это один байт; соседние байты декодируются вместе как UTF-8, поэтому %C3%A9 превращается в é.
- Плюс не считается пробелом: + остаётся +. Если текст пришёл из HTML-формы, замените + на %20 перед декодированием.
- Если какая-либо последовательность неполная или не является корректным UTF-8, весь ввод отклоняется с ошибкой; частичного декодирования не происходит.
- Режим «Полный URL» (decodeURI) оставляет закодированными экранированные зарезервированные символы, такие как %26, %2F и %3F, чтобы не менять структуру URL.