+13°, Киев
www.MegaInet.art » Полезные инструменты » URL-кодирование (percent-encoding): что это и как декодировать
Полезные инструменты

URL-кодирование (percent-encoding): что это и как декодировать

URL-кодирование (percent-encoding): что это и как декодировать
Коротко
  • URL-кодирование (percent-encoding) заменяет «небезопасные» символы на комбинацию из знака % и двух шестнадцатеричных цифр, например пробел превращается в %20.
  • Кодировать нужно пробелы, кириллицу, спецсимволы (?, &, #, =, /) и всё, что может нарушить структуру адреса.
  • Кириллица кодируется по кодировке UTF-8: одна русская буква занимает 2 байта и превращается в 6 символов вида %D0%9F.
  • Декодирование — обратный процесс: %20 снова становится пробелом, а %D0%9F — буквой «П».

Вы наверняка видели адреса, где вместо привычных букв мелькают загадочные «%D0%BF%D1%80%D0%B8» и знаки процента. Это не ошибка и не поломка — так работает URL-кодирование, механизм, который позволяет передавать в веб-адресах пробелы, русские буквы и специальные символы без риска «сломать» ссылку. В этой статье простыми словами разберём, что такое percent-encoding, зачем оно нужно, какие символы обязательно кодировать и как выполнить обратное преобразование — декодирование.

URL-кодировщик
Кодируйте и декодируйте URL онлайн — бесплатно
Открыть инструмент →

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

URL-кодирование, оно же percent-encoding («процентное кодирование»), — это способ представить любой символ в адресе страницы с помощью безопасного набора знаков. Стандарт адресов (RFC 3986) разрешает использовать в URL только ограниченный алфавит: латинские буквы A–Z и a–z, цифры 0–9 и несколько знаков (- _ . ~). Всё остальное — пробелы, кириллица, кавычки, скобки — считается «небезопасным» и должно быть закодировано.

Работает это так: программа берёт байт символа, переводит его в шестнадцатеричное число и подставляет перед ним знак процента. Пробел имеет код 32, в шестнадцатеричной системе это 20, поэтому в адресе пробел выглядит как %20. Именно из-за знака процента метод и получил своё название.

Зачем кодировать URL

Главная причина — надёжность передачи данных. Адрес имеет строгую структуру, где определённые символы играют роль разделителей: вопросительный знак отделяет параметры, амперсанд разделяет пары «ключ=значение», решётка указывает на якорь. Если пользователь введёт в поисковую строку сайта слово с амперсандом или пробелом, а вы вставите его в ссылку «как есть», браузер или сервер поймут адрес неправильно.

Вот типичные ситуации, когда кодирование обязательно:

  • Пробелы. В адресе их быть не должно — они превращаются в %20 (или, в параметрах формы, в знак +).
  • Кириллица и другие национальные алфавиты. Русские буквы не входят в базовый набор ASCII, поэтому кодируются побайтно.
  • Спецсимволы-разделители. Если ? & = # / являются частью самих данных, а не структуры адреса, их нужно закодировать, иначе смысл ссылки исказится.
  • Знаки препинания и символы. Кавычки, скобки, проценты, плюсы — всё это тоже кодируется, чтобы адрес остался однозначным.

Какие символы кодируются

Проще запомнить наоборот: не кодируются только «безопасные» символы. Это латиница, цифры и знаки - _ . ~ (их называют unreserved). Всё остальное либо является служебным (reserved), либо небезопасным и подлежит кодированию, если используется как обычные данные. Ниже — таблица частых примеров.

СимволКодПояснение
пробел%20в параметрах формы может быть +
!%21восклицательный знак
#%23решётка (якорь)
%%25сам знак процента
&%26амперсанд (разделитель параметров)
+%2Bплюс
/%2Fслэш
=%3Dравно
?%3Fвопросительный знак
П%D0%9Fкириллица, 2 байта UTF-8

Как кодируется кириллица

С русскими буквами связана самая частая путаница. В отличие от латиницы, где одна буква — один байт, кириллица в кодировке UTF-8 занимает по два байта на символ. Поэтому одна буква превращается в шесть знаков: два байта, каждый в виде %XX. Например, слово «привет» кодируется как %D0%BF%D1%80%D0%B8%D0%B2%D0%B5%D1%82.

Важно, чтобы и кодирование, и декодирование выполнялись в одной кодировке — сегодня это почти всегда UTF-8. Если сайт использует другую кодировку (например, устаревшую Windows-1251), те же буквы дадут совсем другие последовательности, и при неверном декодировании вместо текста вы увидите «кракозябры». Поэтому современный веб стандартизирован на UTF-8.

Как декодировать URL

Декодирование — это обратная операция. Алгоритм ищет в строке каждую конструкцию вида %XX, переводит шестнадцатеричное число обратно в байт и восстанавливает исходный символ. Так %20 снова становится пробелом, а пара %D0%9F собирается в букву «П». Делать это вручную по таблице долго, поэтому обычно используют готовые инструменты.

Способы декодировать (и закодировать) адрес:

  • Онлайн-инструменты — вставляете строку, получаете результат в один клик, ничего устанавливать не нужно.
  • JavaScript — функции encodeURIComponent() и decodeURIComponent() кодируют и раскодируют отдельные значения; encodeURI() и decodeURI() работают с адресом целиком.
  • PHP — функции urlencode()/urldecode() для параметров форм и rawurlencode()/rawurldecode() для строгого percent-encoding.
  • Python — модуль urllib.parse с методами quote() и unquote().

Практический совет: кодируйте только отдельные значения параметров, а не готовый адрес целиком. Иначе служебные разделители вроде ? и & тоже закодируются, и ссылка перестанет работать. Для отдельного значения в JavaScript подходит encodeURIComponent(), а для сборки всего адреса — encodeURI().

Частые вопросы

Что означает %20 в ссылке?
Это закодированный пробел. Код пробела — 32, в шестнадцатеричной системе это 20, поэтому в адресе он записывается как %20. В параметрах веб-форм пробел иногда заменяется знаком «плюс» (+).

Почему русские буквы в URL выглядят как %D0%BF?
Кириллица кодируется по стандарту UTF-8, где каждая буква занимает два байта. Каждый байт записывается как знак процента и две шестнадцатеричные цифры, поэтому одна русская буква превращается в шесть символов вида %D0%BF.

Нужно ли кодировать весь адрес или только его часть?
Кодируют только значения — например, текст поискового запроса или имя файла. Служебные символы, отделяющие части адреса (?, &, /, =), должны оставаться незакодированными, иначе браузер не поймёт структуру ссылки.

Чем отличается кодирование от декодирования?
Кодирование превращает обычные символы в безопасную запись вида %XX, а декодирование выполняет обратное преобразование — восстанавливает из %XX исходные пробелы, буквы и знаки. Это две стороны одного механизма percent-encoding.

URL-кодировщик
Кодируйте и декодируйте URL онлайн — бесплатно
Открыть инструмент →

Обновлено: 9 июля 2026 г. Редакция MegaInet.art.

Информация

Посетители, находящиеся в группе Гости, не могут оставлять комментарии в данной новости.
Разделы
Сервисы