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

Преобразуй спецсимволы в процентный формат для безопасной передачи в ссылках.

Адресная строка поддерживает строго ограниченный набор знаков. Любые пробелы, амперсанды, вопросительные знаки или нелатинские буквы нужно переводить в процентный формат, иначе веб-адрес просто перестанет открываться или вызовет непредвиденный сбой сервера.

Зачем нужно URL-кодирование спецсимволов

Ряд знаков выполняет в структуре веб-адреса служебную роль: знак ? начинает строку запроса, & разделяет переданные параметры, знак = отделяет ключ от его значения, а символ # указывает на фрагмент страницы.

Если передать обычный амперсанд внутри самого значения параметра — например, в названии компании вроде Smith & Sons, — сервер примет его за начало следующего параметра. Значение обрежется на первом слове, а рядом появится пустой безымянный параметр. Кодирование символа в виде %26 однозначно сообщает обработчику, что перед ним пользовательские данные, а не разделитель структуры.

Как выполнить URL-кодирование текста

  1. Вставь исходную строку в поле ввода.
  2. Нажми кнопку кодирования для отправки запроса.
  3. Скопируй готовый результат и подставь его в параметр запроса или путь ссылки.
  4. Кодируй значения параметров по отдельности, не отправляй в обработку адрес целиком.
  5. Используй декодер, если нужно разобрать и прочитать готовую ссылку с экранированными знаками.

Частые символы при URL-кодировании

СимволКодЗначение
space%20 or +Ломает ссылку во многих контекстах
&%26Иначе воспринимается как разделитель параметров
?%3FИначе воспринимается как начало строки запроса
=%3DИначе воспринимается как разделитель ключа и значения
#%23Весь последующий хвост считается фрагментом
/%2FИначе воспринимается как разделитель сегментов пути
+%2BИначе может ошибочно декодироваться как пробел

Обработка отдельных фрагментов при URL-кодировании

Самая распространенная ошибка — вставить в форму готовую ссылку от начала до конца. В таком случае алгоритм превратит служебную конструкцию :// и привычные косые черты в процентные коды, сделав результат абсолютно нечитаемым для веб-сервера.

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

Вопросы о URL-кодировании

Что представляет собой этот процентный формат?

Это схема представления символа знаком процента и шестнадцатеричным кодом его байта. Так, пробел превращается в %20, поскольку число 20 служит кодом пробела в таблице ASCII.

Почему пробел иногда превращается в плюс?

Исторически веб-формы HTML при отправке параметров кодировали пробелы знаком +. Значение %20 подходит для любых участков ссылки, а знак + допустим только в блоке запроса.

Чем различаются методы encodeURIComponent и encodeURI?

Функция encodeURIComponent экранирует все специальные знаки и используется для отдельных значений, а encodeURI применяется к готовым адресам и сохраняет служебные разделители.

Как обрабатываются символы не из латиницы?

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

Что произойдет при повторном кодировании строки?

Это приведет к скрытой ошибке: готовая последовательность %20 превратится в %2520, и после однократной расшифровки на стороне сервера в данных останется буквальный текст %20.

Cookie
Мы заботимся о ваших данных и хотели бы использовать файлы cookie, чтобы улучшить ваш опыт.