onlinetools.dev

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

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

Работает локально
loading…
Об этом инструменте

Символы вроде пробелов, амперсандов и не-ASCII букв не могут появляться в URL как есть, поэтому они кодируются процентами: пробел становится %20, 你 становится %E4%BD%A0. Этот инструмент кодирует текст для безопасного включения в URL и декодирует percent-экранированные строки обратно в читаемый текст, включая соглашение о + вместо пробелов, используемое в строках запроса.

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

Декодирование строго относится к некорректным последовательностям % — одинокий % или %ZZ выдаёт ошибку, а не молча пропускается, — именно так с ними обойдутся браузеры и серверы.

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

Когда использовать режим компонента, а когда режим полного URI?
Кодируете значение, которое попадёт внутрь URL (поисковый запрос, адрес редиректа, email в параметре) → режим компонента, чтобы & и = внутри значения не ломали строку запроса. Кодируете целый URL для показа или передачи → режим полного URI, чтобы структура URL сохранилась.
Почему + иногда означает пробел?
Формат application/x-www-form-urlencoded — используемый при отправке HTML-форм и в строках запроса — исторически кодирует пробелы как +. В путях URL + — это просто плюс. Декодер здесь трактует + как пробел, следуя семантике строк запроса; %20 работает везде и всегда.
Почему моя строка закодирована дважды (%2520)?
%25 — это кодировка самого символа %, поэтому %2520 означает, что текст %20 был закодирован второй раз. Так бывает, когда кодируют два слоя системы, каждый по разу. Декодируйте здесь дважды, чтобы развернуть, а затем исправьте слой, который не должен кодировать.
Корректно ли обрабатываются символы Unicode?
Да — текст сначала кодируется в UTF-8, и каждый байт экранируется процентом, согласно стандарту WHATWG URL. Именно поэтому один иероглиф CJK превращается в три группы %XX.
Похожие инструменты