CodeKitHub
Русский
Инструменты кодирования

Онлайн-кодировщик/декодировщик URL-адресов

Кодируйте текст в процентах для безопасного использования в URL-адресах или декодируйте закодированный URL-адрес, возвращая его в удобочитаемый вид. Выберите режим «компонентов» (кодирует все, для значений параметров запроса) или режим «полного URL-адреса» (сохраняет структуру :// ? & без изменений). Работает полностью в вашем браузере.

Что это за инструмент?

Кодирование URL (процентное кодирование) заменяет символы, недопустимые в URL-адресах, на знак % и следующее за ним шестнадцатеричное значение символа в байтах — пробел превращается в %20, а 你 — в %E4%BD%A0. Без него такие символы, как пробелы, &, ? и текст, не входящий в набор ASCII, нарушили бы структуру URL-адреса или были бы неверно интерпретированы серверами.

Существует две распространенные задачи, и этот инструмент поддерживает обе: кодирование значения, которое вставляется в параметр запроса (режим «компонент» — кодирует символы /, ? и =), а также кодирование всего URL-адреса с сохранением его структуры (режим «полный URL» — оставляет символы ://, ? и & без изменений).

Зачем его использовать?

  • Создавайте строки запроса безопасно — пользовательские данные, содержащие символы «&», «=» или пробелы, не приведут к сбою URL-адреса.
  • Декодируйте длинные закодированные URL-адреса из логов, аналитики или цепочек перенаправлений, чтобы увидеть их фактическое содержание.
  • Правильная обработка UTF-8 для китайского языка, эмодзи и другого текста, выходящего за пределы ASCII.
  • Два режима, чтобы вы случайно не закодировали символы «:» и «/» во всём URL-адресе.
  • Бесплатно, мгновенно, без загрузки.

Как использовать

  1. Вставьте текст или URL-адрес в поле ввода.
  2. Выберите режим: «Компонент» для значений, передаваемых в параметрах запроса, «Полный URL» — для полных URL-адресов.
  3. Нажмите «Кодировать» или «Декодировать».
  4. Скопируйте результат.

Пример

Ввод

https://example.com/search?q=hello world & 你好

Результат

Component mode: https%3A%2F%2Fexample.com%2Fsearch%3Fq%3Dhello%20world%20%26%20%E4%BD%A0%E5%A5%BD
Full URL mode:  https://example.com/search?q=hello%20world%20&%20%E4%BD%A0%E5%A5%BD

В режиме «Компоненты» также кодируются символы структуры; в режиме «Полный URL» они сохраняются.

Типичные сценарии использования

  • Создание URL-адреса для совместного использования, в котором поисковый запрос или значение фильтра формируются на основе ввода пользователя и могут содержать пробелы, символ «&» или другие специальные символы.
  • Расшифровка длинного URL-адреса с отслеживанием или перенаправлением из электронного письма или рекламной кампании, чтобы увидеть фактический адрес назначения и параметры перед тем, как перейти по нему.
  • Отладка ситуации, когда сервер некорректно считывает параметр запроса — зачастую причиной является зарезервированный символ, который должен был быть закодирован, но не был.
  • Подготовка значения на языке, отличном от английского (китайский, японский, арабский и т. д.), для использования в строке запроса URL.

encodeURIComponent и encodeURI: сравнение на практике

Они напрямую соотносятся с двумя режимами работы данного инструмента и соответствуют реальным функциям JavaScript, с которыми разработчики уже знакомы: encodeURIComponent (режим компонентов) кодирует всё, кроме небольшого набора незарезервированных символов, что делает его безопасным для вставки любого отдельного значения в URL — именно его следует использовать для параметра запроса, сегмента пути или значения фрагмента хэша. encodeURI (режим полного URL) оставляет структурные символы URL (:, /, ?, #, &, =) без изменений, поскольку предполагает, что вы кодируете целый, уже структурированный URL, а не исходное значение — использование этой функции для отдельного значения параметра приведёт к тому, что символы & или =, которые могут содержаться в этом значении, не будут закодированы, что является самой распространённой ошибкой, которую допускают люди при выборе неподходящего режима.

Зарезервированные и незарезервированные символы

Спецификация URL (RFC 3986) делит символы на две группы: незарезервированные символы (буквы, цифры, - _ . ~) всегда безопасны и никогда не кодируются, тогда как зарезервированные символы (: / ? # [ ] @ ! $ & ' ( ) * + , ; =) имеют особое значение в структуре URL и требуют кодирования только в том случае, если они выступают в качестве литеральных данных, а не структурных разделителей. Именно поэтому и существуют эти два режима — «режим компонентов» рассматривает зарезервированные символы как данные, которые нужно защитить, а «режим полного URL» — как структуру, которую нужно сохранить. Понимание этого различия полезнее, чем запоминание того, когда использовать тот или иной режим, поскольку оно объясняет, почему один и тот же символ (например, &) иногда кодируется, а иногда остаётся без изменений в зависимости от того, какую роль он играет в конкретном URL.

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

Когда следует использовать режим компонентов, а когда — режим полного URL-адреса?

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

Почему вместо знака «+» для пробелов появился символ «%20»?

Оба варианта допустимы в разных контекстах. %20 — это универсальная процентная кодировка пробела; символ «+» используется для обозначения пробела только в строках запроса, использующих устаревший формат application/x-www-form-urlencoded. В данном инструменте используется %20, который работает везде.

Почему декодирование завершается с ошибкой?

Входные данные содержат некорректную последовательность символов «%», например, символ «%», за которым не следуют две шестнадцатеричные цифры. Такое часто происходит, когда URL-адрес был обрезан или подвергся двойному декодированию. Исправьте или удалите некорректную последовательность символов «%».

Что такое двойное кодирование?

Кодирование уже закодированного текста: %20 превращается в %2520, поскольку сам символ % кодируется как %25. Это распространённая ошибка — если в декодированном результате по-прежнему присутствуют коды %, необходимо провести декодирование ещё раз.

Поддерживает ли это китайские иероглифы и эмодзи?

Да. Текст кодируется в виде байтов в формате UTF-8, поэтому «你好» превращается в %E4%BD%A0%E5%A5%BD и декодируется обратно без каких-либо проблем — точно так же, как это происходит в браузерах.

Похожие инструменты