Блог
Русский

URL-кодирование онлайн — кодер и декодер URL

Процентное кодирование и декодирование URL с поддержкой Unicode и эмодзи

Работает в браузере · файлы никуда не загружаются

Что это

В URL без изменений могут стоять только латинские буквы, цифры и несколько символов. Всё остальное — кириллица, пробелы, эмодзи — превращается в байты UTF-8, и каждый байт записывается как % и две шестнадцатеричные цифры. Это и есть процентное кодирование. Инструмент показывает закодированный или декодированный результат по мере ввода.

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

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

Как это работает

  • Работу выполняют встроенные функции браузера encodeURIComponent, encodeURI, decodeURIComponent и decodeURI по правилам RFC 3986.
  • Сначала текст превращается в байты UTF-8. Буква кириллицы занимает 2 байта, поэтому даёт две группы %XX; китайский иероглиф — 3 байта, эмодзи — 4.
  • Без кодирования остаются символы A-Z a-z 0-9 - _ . ! ~ * ' ( ). encodeURI также оставляет ; , / ? : @ & = + $ #.
  • Непарный суррогатный символ закодировать нельзя — об этом сообщается ошибкой.
  • Неудачное декодирование никогда не «исправляется» молча: вместо этого выводится сообщение об ошибке.

Примеры

Ввод Режим Результат
a b&c=d Компонент a%20b%26c%3Dd
привет Компонент %D0%BF%D1%80%D0%B8%D0%B2%D0%B5%D1%82
👍 Компонент %F0%9F%91%8D
https://example.com/поиск?q=a b Весь URL https://example.com/%D0%BF%D0%BE%D0%B8%D1%81%D0%BA?q=a%20b

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

Чем encodeURIComponent отличается от encodeURI?

encodeURIComponent предназначен для отдельной части, например значения параметра, поэтому кодирует и разделители / ? & = и #. encodeURI предназначен для целого URL и оставляет эти разделители как есть.

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

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

Пробел — это %20 или +?

В пути URL пробел записывается как %20. Знак + означает пробел только в кодировке HTML-форм (application/x-www-form-urlencoded). Для таких данных включите при декодировании параметр с плюсом.

Отправляется ли мой URL на сервер?

Нет. Всё происходит в браузере.

Не нашли нужный инструмент?