URL Encode / Decode

Процентное кодирование адресов и параметров запроса.

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

В адресах разрешён ограниченный набор символов. Всё остальное — кириллица, пробелы, кавычки, амперсанды внутри значений — записывается в процентном виде: каждый байт UTF-8 превращается в %XX. Например, слово «поиск» в адресе выглядит как %D0%BF%D0%BE%D0%B8%D1%81%D0%BA.

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

  1. Выберите «Кодировать» или «Декодировать».
  2. Вставьте адрес или текст. Если это полный URL с http://, служебные символы (: / ? # &) сохранятся, а закодируются только остальные.
  3. Для отдельного значения параметра кодируется всё — так безопаснее подставлять его в ссылку.
  4. Скопируйте результат.

Примеры кодирования

  • пробел → %20 (или + в данных форм);
  • & внутри значения → %26, = → %3D, ? → %3F;
  • # → %23 — иначе всё после решётки браузер посчитает якорем;
  • «каталог» → %D0%BA%D0%B0%D1%82%D0%B0%D0%BB%D0%BE%D0%B3 — каждая кириллическая буква занимает 2 байта.

Кодируйте значение один раз: повторное кодирование превращает %20 в %2520, и сервер получит не пробел, а лишние символы. Если в ссылке видны последовательности %25, скорее всего, её закодировали дважды.

Когда это нужно

  • прочитать «нечитаемую» ссылку с кириллицей, скопированную из адресной строки;
  • подставить в параметр значение с пробелами, & или =;
  • собрать ссылку с UTM-метками — для этого есть отдельный генератор UTM;
  • подготовить кириллические адреса для sitemap.xml.

URL-кодирование в PHP и Битрикс

В PHP значения параметров кодируются urlencode() (пробел → +) или rawurlencode() (пробел → %20), а строка запроса целиком собирается через http_build_query(). В Битрикс для работы с адресами есть класс Bitrix\Main\Web\Uri: он корректно добавляет и удаляет параметры без ручного кодирования.

Полезные материалы Bitrix-Help

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

Чем encodeURI отличается от encodeURIComponent?
encodeURI сохраняет символы, нужные для структуры адреса (: / ? # &), encodeURIComponent кодирует всё — он подходит для значений параметров.
Почему пробел превращается то в +, то в %20?
Плюс используется в данных форм (application/x-www-form-urlencoded), %20 — в остальных частях адреса. Оба варианта декодируются в пробел.
Нужно ли кодировать кириллические адреса?
Браузер показывает их читаемо, но передаёт в закодированном виде. В sitemap.xml и в коде адреса лучше хранить закодированными.
Что делать с ошибкой «некорректная последовательность %»?
В строке есть знак % без двух шестнадцатеричных цифр после него. Проверьте, не повреждена ли ссылка при копировании.
Чем это отличается от Punycode?
URL-кодирование применяется к пути и параметрам, а Punycode — к домену: например, кириллический домен .рф записывается как xn--p1ai.

Вам также может пригодиться

Услуги
Инструменты
База знаний