Skip to main content
CheckTown
Конвертеры

Кодирование и декодирование URL: делайте URL веб-безопасными мгновенно

Опубликовано 5 мин чтения
В этой статье

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

Кодирование URL (также называемое процентным кодированием) преобразует символы, которые небезопасны или зарезервированы в URL, в безопасный формат. Каждый небезопасный символ заменяется знаком % и следующим за ним двузначным шестнадцатеричным ASCII-кодом. Например, пробел становится %20, а амперсанд — %26.

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

Как работает кодирование URL

Кодировщик определяет символы, небезопасные для URL, и заменяет их процентно-кодированными эквивалентами.

  • Определение безопасных символов — буквы, цифры и символы - _ . ~ остаются без изменений
  • Обработка зарезервированных символов — ! * ' ( ) ; : @ & = + $ , / ? # [ ] кодируются в большинстве контекстов
  • Поддержка Unicode — не-ASCII-символы сначала кодируются в UTF-8, затем каждый байт кодируется в процентном формате

Попробуйте бесплатно — без регистрации

Закодировать или декодировать URL →

Когда применять кодирование URL

Кодирование URL необходимо всякий раз, когда специальные символы появляются в компонентах URL.

  • Параметры запроса — кодируйте значения, передаваемые в строке запроса, особенно поисковые запросы, введённые пользователем
  • API-запросы — кодируйте сегменты пути и параметры при программном построении URL для API
  • Данные форм — кодируйте данные формы перед добавлением к URL в GET-запросах

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

В чём разница между encodeURI и encodeURIComponent в JavaScript?

encodeURI кодирует полный URL и оставляет нетронутыми символы /, :, #, поскольку они несут структурный смысл в URL. encodeURIComponent кодирует отдельный компонент URL (например, значение параметра запроса) и процентно кодирует в том числе эти структурные символы. Для кодирования значений отдельных параметров всегда используйте encodeURIComponent.

Почему пробел иногда отображается как +, а не %20?

Формат application/x-www-form-urlencoded (используемый при отправке HTML-форм) кодирует пробелы как + вместо %20. Это устаревшее соглашение из ранних веб-стандартов. В строках запроса из HTML-форм + означает пробел; в других URL-контекстах используется %20. Оба варианта допустимы, однако выбор определяется контекстом.

Нужно ли кодировать весь URL или только его части?

Кодируйте только отдельные компоненты (сегменты пути, значения параметров запроса). Кодирование всего URL затронет и символы :, / и ?, которые определяют структуру URL, что сломает его. Правило: кодируйте значения, но не структурные символы, образующие URL.

Похожие инструменты