Это не применять только к амперсанд в URL-адресов , но всем reserved characters. Некоторые из них включают в себя:
# $ & + ,/: ; = ? @ [ ]
Идея такая же, как и кодирующая &
в 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» из трех символов 0% «/».
http://en.wikipedia.org/wiki/Percent-encoding#Percent-encoding_reserved_characters
: -% 26 не работает для меня. Есть ли другое решение? – Sanjiv
@Sanjiv: что вы подразумеваете под словом «не работает»? – Blender
Когда я заменяю & на% 26, он все еще показывает ту же ошибку - 'потенциально опасное значение Request.Path было обнаружено у клиента (&).' – Sanjiv