URL кодирование / декодирование

Кодируйте и декодируйте URL-адреса (процентное кодирование) мгновенно. Поддержка полных URL и отдельных параметров. Вся обработка выполняется в вашем браузере.

0 символов

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

URL-кодирование (процентное кодирование, percent-encoding) — это механизм, описанный в стандарте RFC 3986, для представления символов в URL-адресах, которые нельзя использовать напрямую. Небезопасные символы заменяются на % и два шестнадцатеричных символа, соответствующих байтовому значению символа.

Например, пробел становится %20, амперсанд &%26, а кириллические символы сначала преобразуются в байты UTF-8, а затем кодируются. Без URL-кодирования браузеры и серверы могут неправильно интерпретировать специальные символы, что приводит к поломке ссылок и ошибкам API-запросов.

encodeURIComponent и encodeURI — в чём разница

JavaScript предоставляет две встроенные функции для URL-кодирования. Выбор правильной — принципиален:

  • encodeURIComponent — кодирует все специальные символы, включая : / ? # [ ] @ ! $ & ' ( ) * + , ; =. Применяйте для кодирования отдельных значений — например, поискового запроса или значения параметра. Это наиболее часто используемая функция.
  • encodeURI — сохраняет символы, составляющие структуру полного URL (: / ? # [ ] @). Применяйте для кодирования всего URL целиком, когда нужно сохранить протокол, путь и разделители параметров.

Таблица кодирования символов

  • Пробел → %20 (или + в данных формы)
  • &%26
  • =%3D
  • ?%3F
  • /%2F
  • #%23
  • @%40

Когда нужно URL-кодирование

  • Параметры запроса — любой пользовательский ввод в URL-параметрах необходимо кодировать для предотвращения ошибок и внедрения вредоносного кода
  • API-запросы — вызовы REST API часто требуют закодированных параметров, особенно для фильтров, поисковых запросов и пагинации
  • URL-адреса перенаправления — обратные ссылки (callback URL), передаваемые как параметры, необходимо кодировать дважды для корректной обработки на всех этапах
  • Интернационализированные URL — символы кириллицы, арабского, китайского и других нелатинских алфавитов требуют процентного кодирования
  • Отправка форм — HTML-формы с методом GET автоматически кодируют значения, но при отправке через AJAX кодирование нужно выполнять вручную

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

Чем отличается %20 от + для пробелов?
Оба обозначают пробел, но в разных контекстах. %20 — стандартное процентное кодирование, определённое в RFC 3986. Символ + используется специфически в данных HTML-форм (application/x-www-form-urlencoded). На практике %20 предпочтителен для путей URL, а + часто встречается в строках запросов при отправке форм.
Когда использовать encodeURIComponent, а когда encodeURI?
Используйте encodeURIComponent для отдельных значений — поисковый запрос, значение параметра, любой фрагмент, который будет вставлен в URL. encodeURI применяйте только когда у вас есть полный URL и нужно закодировать небезопасные символы, сохранив его структуру (протокол, хост, путь).
Данные отправляются на сервер?
Нет. Всё кодирование и декодирование выполняется в вашем браузере стандартными функциями JavaScript. Данные не передаются на наш сервер.