Кодировщик компонента URI

Если вы хоть раз передавали значение вроде name=John & Jane в URL без кодирования, вы знаете эту боль: & читается как новый параметр, и сервер видит мусор. Этот инструмент процентно кодирует любую строку для безопасного использования как компонент URI по RFC 3986, превращая каждый зарезервированный символ в пару %HH (включая пробелы). Вставьте фрагмент, значение запроса или цель редиректа и получите обратно нечто безопасное для конкатенации в любой URL.

Как закодировать компонент URI

  1. 1

    Вставьте ваше значение

    Вставьте отдельное значение параметра запроса, сегмент пути или строку фрагмента.

  2. 2

    Выберите кодирование или декодирование

    Смените направление, чтобы превратить процентные экранирования обратно в исходные символы.

  3. 3

    Запустите

    Инструмент кодирует каждый символ в UTF-8, затем заменяет каждый зарезервированный байт на %HH.

  4. 4

    Скопируйте результат

    Поместите вывод прямо в свой шаблон URL или API-клиент.

Что экранируется

Этот кодировщик следует RFC 3986: нетронутым остаётся только незарезервированный набор A-Z a-z 0-9 - _ . ~. Всё остальное становится процентно-кодированным UTF-8, включая пробел и субразделители ! * ' ( ), которые encodeURIComponent из JavaScript оставил бы как есть.

Символ Кодируется как
пробел %20
! %21
# %23
& %26
' %27
( %28
) %29
* %2A
+ %2B
/ %2F
= %3D
? %3F
é %C3%A9

Компонент против полного URI

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

const url = `/search?q=${encodeURIComponent(userInput)}`;

Частые подводные камни

  • Двойное кодирование: кодирование того, что уже закодировано, даёт %2520 вместо %20. Всегда декодируйте сначала, если не уверены в источнике.
  • Плюсы в формах: отправка HTML-формы кодирует пробелы как +, а не %20. Декодеры, строго следующие RFC 3986 (этот в том числе), не превратят + обратно в пробел. Для таких случаев используйте декодер, учитывающий формы.
  • Разделители пути: кодирование / здесь превращает его в %2F. Если нужно сохранить настоящую структуру пути, сначала соедините сегменты, а затем закодируйте каждый по отдельности.

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

Это процентное кодирование по RFC 3986, строгая форма. Оно экранирует :, /, ?, # и остальные зарезервированные символы (а также !, ', (, ) и *), потому что компонент не должен нести в себе структуру URL. Это делает его строже, чем encodeURIComponent из JavaScript, и намного строже, чем encodeURI.

%20 это способ RFC 3986. + для пробела это наследие кодирования тела application/x-www-form-urlencoded. Для строк запроса в URL %20 всегда безопасен; + ожидается на сервере, только если он создан POST-отправкой формы.

Каждый символ сначала кодируется в UTF-8, затем каждый байт экранируется. Символ вроде я становится %D1%8F (два байта).

Нет. Значение кодируется процентами на сервере для построения вашего результата и не сохраняется и не логируется; ничто из вставленного вами не сохраняется после отправки ответа.

Сопутствующие инструменты

Справочная таблица ASCII

Полная таблица ASCII от 0 до 127 с десятичным, шестнадцатеричным, восьмеричным и двоичным представлением, а также записью числовых ссылок HTML, включая NUL, LF и DEL.

Справочник символов HTML

Справочник HTML-сущностей с поиском, их именованными и числовыми кодами, а также копированием специальных символов и знаков одним кликом.

Смешивание цветов

Смешайте два HEX-цвета в 2-20 равномерных образцов. Каждый промежуточный цвет показывается как HEX-код в верхнем регистре, включая оба края.

Справочник сочетаний клавиш

Ищите документированные сочетания по умолчанию для VS Code, Chrome и Bash с GNU Readline в macOS, Windows и Linux.

Счетчик FPS

Измерьте FPS браузера через requestAnimationFrame: сглаживание, минимальная и максимальная частота кадров, порог предупреждения и график по желанию. Работает локально, без загрузок и API.

Генератор случайных букв

Генерируйте случайные буквы A-Z. Выберите количество, верхний или нижний регистр либо смешанный вариант для игр, заданий и уроков.

Инструмент доступен на других языках