Кодирование и декодирование URL
Закодируйте текст для URL или декодируйте его обратно, а любой URL разберите на части и параметры запроса.
Работает полностью в браузере
Разбор URL на части
Параметры запроса
| № | Имя | Значение (декодированное) |
|---|
Текст до 5 МБ. Результат обновляется по мере ввода.
Как закодировать или декодировать URL
- Выберите «Кодировать» или «Декодировать», затем укажите, чем является текст: одним значением (компонентом), целым URL или данными формы.
- Введите или вставьте текст. Результат появляется ниже по мере ввода; повреждённая последовательность сообщается с указанием позиции.
- Скопируйте результат или вставьте полный URL в блок разбора ниже, чтобы увидеть его хост, путь и параметры запроса.
Что делает кодирование URL
URL может содержать лишь ограниченный набор символов ASCII, и у некоторых из них есть своя роль: / разделяет сегменты пути, ? начинает запрос, & и = делят его на имена и значения, # начинает фрагмент. Процентное кодирование записывает любой другой байт как % и две шестнадцатеричные цифры, поэтому значение вроде R&D / 2026 может передаваться внутри строки запроса, не будучи принятым за структуру: R%26D%20%2F%202026.
Сначала текст превращается в байты UTF-8, поэтому одна буква с диакритикой превращается в два экранирования, а эмодзи — в четыре. Декодирование выполняет обратный процесс и проверяет, что байты образуют корректный UTF-8. Этот инструмент декодирует собственным строгим разбором, поэтому вместо общей ошибки «URI malformed» он сообщает, какая последовательность повреждена и где.
Три режима соответствуют трём распространённым ситуациям. Кодируйте отдельное значение (компонент), когда создаёте параметр запроса или сегмент пути. Кодируйте целый URL, только если у вас полный адрес с пробелами или не-ASCII буквами. Данные формы используйте для тела отправки формы или для строки запроса, составленной так, как её составляют HTML-формы.
Советы
- Нужен чистый читаемый путь вместо экранирований? Создайте его в «Генераторе slug».
- Двоичные данные в URL обычно записывают в Base64url, а не процентным кодированием: попробуйте «Кодирование и декодирование Base64».
- Токен в строке запроса, начинающийся с
eyJ, скорее всего, JWT. Прочитайте его в «Декодере JWT».
Вопросы и ответы
Чем кодирование компонента отличается от кодирования полного URL?
Кодирование компонента (encodeURIComponent в JavaScript) экранирует всё, кроме букв, цифр и символов - _ . ! ~ * ' ( ), поэтому такие символы, как / ? & =, превращаются в %2F %3F %26 %3D. Используйте его для отдельного значения запроса или сегмента пути. Кодирование полного URL (encodeURI) не трогает символы, задающие структуру URL, и экранирует только пробелы, не-ASCII буквы и ещё несколько символов, так что весь адрес остаётся рабочим.
Когда использовать кодирование формы?
Кодирование формы (application/x-www-form-urlencoded) — это то, что отправляет HTML-форма и что используется в большинстве строк запроса. Оно записывает пробел как + и экранирует всё, кроме букв, цифр и символов * - . _. При декодировании в этом режиме + читается как пробел; в других режимах он остаётся знаком плюс.
Как кодируются буквы с диакритикой, кириллица и эмодзи?
В виде байтов UTF-8, каждый из которых записывается как % и две шестнадцатеричные цифры, как ожидают браузеры и серверы. Например, é превращается в %C3%A9. При декодировании проверяется, что байты образуют корректный UTF-8, и вы узнаёте, если это не так.
Почему при декодировании появляется ошибка?
За каждым знаком процента должны следовать две шестнадцатеричные цифры (0–9, A–F). Одиночный %, оборванная последовательность вроде %A или байты, не являющиеся корректным UTF-8, сообщаются с указанием позиции, чтобы вы могли их найти. Если в тексте есть настоящий знак процента, его нужно записывать как %25.
Заходит ли разбор URL по этому адресу?
Нет. Для разделения текста на части используется встроенный в браузер разбор URL; ничего не запрашивается и никуда не отправляется. Введённый вами текст остаётся в этой вкладке.
Нужно ли кодировать целый URL больше одного раза?
Нет. Повторное кодирование уже закодированного текста превращает %20 в %2520, и это частая ошибка. Если в результате вы видите %25 и две шестнадцатеричные цифры, вероятно, ввод уже был закодирован; сначала декодируйте его.