Это относится не только к амперсанду в URL, но и ко всем зарезервированным символам . Некоторые из которых включают в себя:
# $ & + , / : ; = ? @ [ ]
Идея та же, что и в кодировании &
HTML-документа, но контекст изменился и теперь находится внутри URI, в дополнение к HTML-документу. Таким образом, процентное кодирование предотвращает проблемы с синтаксическим анализом в обоих контекстах.
Место, где это очень удобно, это когда вам нужно поместить URL внутри другого URL. Например, если вы хотите опубликовать статус в Twitter:
http://www.twitter.com/intent/tweet?status=What%27s%20up%2C%20StackOverflow%3F(http%3A%2F%2Fwww.stackoverflow.com)
В моем твите много зарезервированных символов, а именно ?'():/
, поэтому я закодировал все значение status
параметра URL. Это также полезно при использовании mailto:
ссылки , которые имеют тело сообщения или предмет, потому что вам нужно для кодирования body
и subject
параметры , чтобы сохранить разрывы строк, амперсанд и т.д. неповрежденными.
Когда символ из зарезервированного набора («зарезервированный символ») имеет особое значение («зарезервированная цель») в определенном контексте, и схема URI говорит, что этот символ необходимо использовать для какой-то другой цели, тогда символ должен быть в процентах. Кодирование в процентах зарезервированного символа включает преобразование символа в соответствующее ему байтовое значение в ASCII и затем представление этого значения в виде пары шестнадцатеричных цифр. Цифры, перед которыми стоит знак процента («%»), который используется в качестве escape-символа, затем используются в URI вместо зарезервированного символа. (Для не-ASCII символа он обычно преобразуется в свою байтовую последовательность в UTF-8, а затем каждое значение байта представляется, как указано выше.) Зарезервированный символ «/», например, если используется в «пути» Компонент URI, имеет особое значение быть разделителем между сегментами пути. Если в соответствии с заданной схемой URI «/» должен находиться в сегменте пути, то в сегменте вместо необработанного «/» должны использоваться три символа «% 2F» или «% 2f».
http://en.wikipedia.org/wiki/Percent-encoding#Percent-encoding_reserved_characters