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

Кодировщик и декодировщик URL

Кодируйте текст для безопасного использования в URL или декодируйте percent-encoded URL обратно в читаемый текст. Корректно работает с Unicode и предлагает режимы для компонента и полного URL.

  • Файлы никогда не покидают ваше устройство
  • Бесплатно, без регистрации
  • Без водяных знаков
  • Работает офлайн после загрузки
Loading tool…

Как пользоваться: кодировщик и декодировщик url

  1. 1

    Выберите направление

    Закодируйте текст для URL или декодируйте закодированный URL обратно в текст.

  2. 2

    Выберите режим

    Режим компонента экранирует всё; режим полного URL сохраняет структуру.

  3. 3

    Скопируйте результат

    Результат обновляется по мере ввода.

Почему URL не может просто содержать произвольные символы

Структура URL опирается на то, что определённые символы — `/` для разделения сегментов пути, `?` для начала строки запроса, `&` для разделения параметров, `#` для фрагмента — несут фиксированное структурное значение везде, где встречаются. Если значение, помещаемое внутрь URL, например поисковый запрос или имя пользователя, случайно содержит один из этих же символов буквально, должен существовать способ отличить «этот амперсанд — часть настоящего значения» от «этот амперсанд разделяет два параметра запроса». Percent-кодирование — именно такой механизм: любой символ со структурным значением, когда ему нужно появиться как буквальные данные, а не как структура, заменяется на `%`, за которым следует его шестнадцатеричное значение байта, поэтому `&` превращается в `%26` и однозначно читается как данные, а не как разделитель параметров.

Ошибка, которая ломает больше URL, чем любая другая

Самая частая ошибка URL-кодирования — кодирование целого собранного URL не той функцией: использование `encodeURIComponent`, которая экранирует каждый зарезервированный символ, включая `/`, `:`, `&` и `?`, применительно ко всему адресу, а не к одному отдельному значению. `://` после протокола превращается в `%3A%2F%2F`, каждый `&`, разделяющий параметры запроса, превращается в `%26`, и URL вообще перестаёт быть URL — он становится одной длинной закодированной строкой без какой-либо структуры, которую сервер способен разобрать. Правильный подход — обратный порядок: сначала закодировать каждое отдельное значение — поисковый запрос, целевой адрес редиректа, что бы ни было реальными данными, — и только потом вставить эти уже закодированные значения в окружающую структуру URL, никогда не кодируя повторно уже собранный результат целиком.

Именно поэтому этот инструмент предлагает два отдельных режима вместо одной общей кнопки «кодировать»: режим компонента — для кодирования одного значения, которое вот-вот станет частью URL, и режим полного URL — для более редкого случая кодирования целого адреса с намеренным сохранением его структурных символов.

Почему пробел иногда становится %20, а иногда знаком плюс

Сегодня в активном использовании остаются сразу две разные схемы кодирования пробела, и они не взаимозаменяемы. Percent-кодирование, стандарт общего назначения, представляет пробел как `%20` и валидно везде в URL — в пути, в строке запроса, повсюду. Схема с `+` для пробела пришла из более старого и узкого стандарта, специально предназначенного для отправки HTML-форм с типом содержимого `application/x-www-form-urlencoded`, и валидна только внутри строки запроса; буквальный `+`, встретившийся в пути URL, вообще не интерпретируется как пробел — это просто символ плюс. Этот инструмент всегда выдаёт `%20`, валидный в любом контексте, и корректно декодирует обе формы при чтении закодированного URL обратно.

Где это важно за пределами браузеров

Правила percent-кодирования применяются к любому URL независимо от того, что его строит или потребляет — payload вебхука, построенный бэкенд-сервисом, deep link, открытый мобильным приложением, запрос API, собранный скриптом. Везде, где значение, потенциально содержащее пробелы, амперсанды или не-ASCII символы, подставляется в строку URL, действует то же самое правило — кодировать значение перед вставкой, — поэтому это не только вопрос браузера, но и в той же мере вопрос бэкенда и скриптов.

Часто задаваемые вопросы

В чём разница между режимом компонента и режимом полного URL?

Режим компонента (`encodeURIComponent`) экранирует всё, включая / ? & = #, — это то, что нужно для значения одного параметра запроса. Режим полного URL (`encodeURI`) оставляет эти структурные символы нетронутыми, чтобы весь адрес оставался рабочим. Использование не того режима — самая частая ошибка URL-кодирования.

Почему мой URL сломался, когда я закодировал его целиком?

Почти наверняка вы применили режим компонента ко всему URL целиком, из-за чего экранировались `://` и разделители `&`. Кодируйте каждое значение параметра по отдельности, а затем собирайте URL — не кодируйте уже собранный результат.

Почему пробел иногда становится %20, а иногда +?

Percent-кодирование использует %20. Форма `+` пришла из более старой схемы кодирования HTML-форм (`application/x-www-form-urlencoded`) и валидна только в строке запроса, но никогда в пути. Этот инструмент всегда выдаёт %20 и корректно декодирует обе формы.

Как обрабатываются эмодзи и символы других языков?

Они кодируются как байты UTF-8, поэтому «é» превращается в %C3%A9, а эмодзи — в четыре percent-эскейпа. Это корректное поведение, и оно полностью обратимо.

Частые задачи: кодировщик и декодировщик url