Что такое процентное кодирование (URL-кодирование)?
Руководства по URL-кодированию
Изначально URL был рассчитан на передачу лишь ограниченного набора символов ASCII. Поместите пробел, не-латинскую букву или специальный символ вроде ? или & прямо в адрес — и разные браузеры или серверы могут истолковать его по-разному, либо адрес попросту сломается. Решение — процентное кодирование (percent-encoding), которое обычно и называют URL-кодированием.
Что означает %XX
Процентное кодирование заменяет небезопасный символ его байтовым значением в шестнадцатеричном виде с префиксом %. Пробел превращается в %20, вопросительный знак — в %3F. Символ, состоящий из нескольких байтов, как большинство не-латинских букв, получает по одному %XX на каждый байт UTF-8.
- пробел →
%20 ?→%3F&→%26€(UTF-8) →%E2%82%AC
Почему UTF-8
Современный веб считает UTF-8 стандартом. Браузерная функция encodeURIComponent преобразует текст в байты UTF-8, а затем превращает каждый байт в %XX. Благодаря этому один и тот же символ всегда кодируется одинаково, а декодирование в точности восстанавливает исходный текст.
Инструмент кодирования/декодирования на этом сайте использует встроенные функции браузера, поэтому ваш ввод преобразуется мгновенно и никогда не отправляется на сервер.
Когда это нужно
Процентное кодирование требуется всякий раз, когда вы вставляете произвольную строку в часть адреса — ссылку с поисковым запросом, значение параметра query или целевой URL перенаправления, помещённый внутрь другого URL. Без кодирования символ & или = в значении может быть принят за разделитель и обрезать параметр.