Перейти к основному содержимому

Как декодировать строку, закодированную для 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.

Руководства по кодированию URL