Дополнительные параметры
Преобразовать + в пробелы
При включении символы + будут преобразованы в пробелы. Это полезно при декодировании параметров запроса.
Режим реального времени
При включении текст будет автоматически декодироваться по мере ввода.
Эти параметры помогают контролировать, как кодированные символы декодируются в ваших URL.
Что такое декодирование URL?
Декодирование URL обращает процентное кодирование вспять: оно читает escape-последовательности %XX в закодированном URL и возвращает им исходные символы. Именно так восстанавливается читаемая строка запроса, значение формы или сегмент пути из URL, которую браузер, API или строка журнала передали в закодированном виде.
Как работает декодирование URL?
Декодирование URL следует определённому процессу преобразования процентно-кодированных последовательностей обратно в их исходные символы:
- Входная строка сканируется на наличие процентно-кодированных escape-последовательностей (%XX)
- Каждый %XX преобразуется из двух шестнадцатеричных цифр обратно в исходное значение байта
- Последовательные декодированные байты собираются в символы UTF-8 (многобайтовая последовательность становится одним символом)
- В контексте строки запроса + декодируется в пробел (application/x-www-form-urlencoded), тогда как %2B остаётся литеральным +
- Незарезервированные символы и уже декодированный текст проходят без изменений
Зачем использовать URL-декодер?
- Читаемый вывод: преобразуйте %20, %40 и %3D обратно в пробел, @ и =, чтобы понять, что на самом деле содержит URL
- Международный текст: восстанавливайте символы с диакритикой и не-ASCII-символы из их UTF-8-байтовых последовательностей, чтобы %C3%A9 снова читался как é
- Отладка: проверяйте реальные значения в строке запроса, redirect OAuth или payload вебхука, прежде чем действовать на их основе
- Соответствие стандартам: декодируйте согласно RFC 3986 — тем же правилам, которым следуют браузеры и серверы, — чтобы видеть именно то, что видят они
Каковы распространённые применения декодирования URL?
Декодирование URL необходимо во многих сценариях веб-разработки:
- Отправка форм: чтение исходных значений полей из GET- и POST-данных в формате application/x-www-form-urlencoded
- Разработка API: распаковка процентно-закодированных параметров пути и строки запроса, поступающих на конечную точку API
- Файловые системы: восстановление путей и имён файлов, которые были процентно-закодированы для передачи внутри URL
- Отладка ссылок: декодирование общих или записанных в журнал URL для просмотра специальных символов и международного текста, которые они содержат
Как выглядит пример декодирования URL?
Вот несколько распространённых примеров декодирования URL: %20 (или +) превращается в пробел, %40 — в @, %23 — в #, %26 — в &, а %3D — в =. UTF-8-последовательность вида %C3%A9 становится международным символом é.
Что такое процентное кодирование?
Процентное кодирование — это механизм, определённый в RFC 3986 §2.1, для представления символов, которые внутри URI являются небезопасными или зарезервированными. Правило механическое: каждый байт, который не может появиться буквально, записывается как знак процента, за которым следуют две шестнадцатеричные цифры — форма %XX —, где XX — это значение байта. Символы вне ASCII, такие как é, сначала кодируются как их UTF-8 байтовая последовательность, а затем каждый байт кодируется процентным образом по отдельности. Разработчики сталкиваются с этим почти ежедневно: в строках запросов, при отправке форм, в URL обратного вызова OAuth, в параметрах пути REST API и везде, где URL должен переносить пунктуацию, пробелы или символы вне набора незарезервированных A–Z a–z 0–9 - _ . ~.
Как на самом деле работает декодирование %C3%A9 в é?
Возьмём закодированную строку запроса ?q=caf%C3%A9&lang=fr. Декодирование даёт ?q=café&lang=fr. Вот пошаговый разбор побайтово:
- Ввод:
?q=caf%C3%A9&lang=fr - Вывод:
?q=café&lang=fr
%C3→ байт0xC3(в двоичном11000011) — ведущий байт 2-байтовой UTF-8 последовательности.%A9→ байт0xA9(в двоичном10101001) — байт продолжения. ВместеC3 A9— это UTF-8 кодировка кодовой точки U+00E9, то естьé.- Символы
?,=и&остаются нетронутыми, потому что они структурные — они разделяют запрос и его пары ключ/значение. Литералcafтакже проходит без изменений, поскольку строчные ASCII-буквы относятся к набору незарезервированных.
В чём разница между decodeURIComponent и decodeURI?
JavaScript предоставляет два встроенных декодера, и их путаница — одна из самых распространённых ошибок при обработке URL:
decodeURIComponent(str)декодирует каждую процентно-закодированную последовательность, включая зарезервированные символы, такие как&,=,?,/и#. Используйте его на отдельных значениях строки запроса или сегментах пути — никогда на целом URL.decodeURI(str)намеренно консервативен: он пропускает зарезервированные символы. Если передать ему%26, он вернёт буквальную строку%26, а не&. Он предназначен для целых URI, в которых вы хотите, чтобы структура пережила полный цикл.
Эмпирическое правило: если строка — это часть URL (один параметр, фрагмент, закодированное имя файла), используйте decodeURIComponent. Этот инструмент ведёт себя как decodeURIComponent — каждая последовательность %XX в вашем вводе декодируется, включая зарезервированные символы.
Декодирование URL — это способ прочитать, что она реально содержит. Вставьте закодированную строку выше, и каждая последовательность %XX превратится обратно в свой символ прямо в браузере: отлаживайте параметры запроса, проверяйте redirect OAuth или восстанавливайте имена файлов с диакритикой — ничего не отправляя на сервер.