Процентное кодирование


Процентное кодирование , также известное как кодирование URL , представляет собой метод кодирования произвольных данных в унифицированный идентификатор ресурса (URI) с использованием только ограниченного количества символов US-ASCII, допустимых в URI. Хотя это известно как кодирование URL-адресов, оно также используется более широко в основном наборе унифицированных идентификаторов ресурсов (URI), который включает в себя как унифицированный указатель ресурса (URL), так и унифицированное имя ресурса (URN). Как таковой, он также используется при подготовке данных типа application/x-www-form-urlencoded media , как это часто используется при отправке данных формы HTML в HTTP - запросах.

Символы, разрешенные в URI, либо зарезервированы , либо не зарезервированы (или символ процента как часть процентного кодирования). Зарезервированные символы — это те символы, которые иногда имеют особое значение. Например, символы косой черты используются для разделения разных частей URL-адреса (или, в более общем смысле, URI). Незарезервированные символы не имеют таких значений. Используя процентное кодирование, зарезервированные символы представляются с помощью специальных последовательностей символов. Наборы зарезервированных и незарезервированных символов, а также обстоятельства, при которых определенные зарезервированные символы имеют особое значение, немного менялись с каждым пересмотром спецификаций, регулирующих URI и схемы URI.

Когда символ из зарезервированного набора («зарезервированный символ») имеет особое значение («зарезервированное назначение») в определенном контексте, а схема URI говорит, что необходимо использовать этот символ для какой -то другой цели, тогда символ должен быть закодирован в процентах . Процентное кодирование зарезервированного символа включает в себя преобразование символа в соответствующее ему значение байта в ASCII , а затем представление этого значения в виде пары шестнадцатеричных цифр. Цифры, которым предшествует знак процента ( %), который используется в качестве escape-символа , затем используются в URI вместо зарезервированного символа. (Для символов, отличных от ASCII, они обычно преобразуются в последовательность байтов вUTF-8 , а затем каждое значение байта представляется, как указано выше.)

Зарезервированный символ /, например, если он используется в компоненте «путь» URI , имеет особое значение, поскольку он является разделителем между сегментами пути. Если, в соответствии с заданной схемой URI, /он должен находиться в сегменте пути, то в сегменте должны использоваться три символа %2Fили вместо необработанного .%2f/

Зарезервированные символы, которые не имеют зарезервированного назначения в конкретном контексте, также могут быть закодированы в процентах, но семантически не отличаются от тех, которые таковыми не являются.

Например, в компоненте запроса URI (часть после символа ?) по- /прежнему считается зарезервированным символом, но обычно он не имеет зарезервированного назначения, если только в конкретной схеме URI не указано иное. Символ не нужно кодировать в процентах, если он не имеет зарезервированного назначения.