экранирование амперсанда в url
Я пытаюсь отправить сообщение GET, которое содержит строки с амперсандами и не может понять, как избежать амперсанда в url.
пример:
http://www.example.com?candy_name=M&M
result => candy_name = M
Я тоже пробовал:
http://www.example.com?candy_name=M&M
result => candy_name = M
Я использую url вручную, поэтому мне просто нужны правильные символы.
Я не могу использовать любые библиотеки. Как это можно сделать?
7 ответов:
Они должны быть закодированы в процентах:
> encodeURIComponent('&') "%26"поэтому в вашем случае URL-адрес будет выглядеть так:
http://www.mysite.com?candy_name=M%26M
это не только применить к амперсанду в 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
вы можете использовать символ % для "экранирования" символов, которые не разрешены в URL-адресах. Смотрите RFC1738.
таблица значений ascii находится здесь:http://www.asciitable.com/
вы можете видеть & 26 в шестнадцатеричном формате-так что вам нужно M%26M
// this may help if someone want by php $variable ="candy_name=M&M"; $variable = str_replace("&","%26",$variable );
Если вы не можете использовать какие-либо библиотеки для кодирования значения, http://www.urlencoder.org/ или http://www.urlencode-urldecode.com/ или ...
просто введите значение "M&M", а не полный url; -)
вы можете скорее передать свои аргументы, используя эту функцию encodeURIComponent, поэтому вам не нужно беспокоиться о передаче каких-либо специальных символов.
data: "param1=getAccNos¶m2="+encodeURIComponent('Dolce & Gabbana') OR var someValue = 'Dolce & Gabbana'; data : "param1=getAccNos¶m2="+encodeURIComponent(someValue)https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/encodeURIComponent
Comments