escapándose ampersand en url

Estoy tratando de enviar un mensaje GET que contenga cadenas con ampersands y no puedo entender cómo escapar del ampersand en la url.

Ejemplo:

http://www.example.com?candy_name=M&M result => candy_name = M 

También probé:

 http://www.example.com?candy_name=M\&M result => candy_name = M\\ 

Estoy usando urls manualmente, así que solo necesito los caracteres correctos.

No puedo usar ninguna biblioteca. ¿Cómo puede hacerse esto?

Deben estar codificados en porcentajes:

 > encodeURIComponent('&') "%26" 

Entonces, en su caso, la URL se vería así:

 http://www.mysite.com?candy_name=M%26M 

Esto no solo se aplica al ampersand en las URL, sino a todos los caracteres reservados . Algunos de los cuales incluyen:

  # $ & + , / : ; = ? @ [ ] 

La idea es lo mismo que codificar un & en un documento HTML, pero el contexto ha cambiado para estar dentro del URI, además de estar dentro del documento HTML. Entonces, la encoding porcentual evita problemas con el análisis dentro de ambos contextos.

El lugar donde esto es útil es cuando necesitas poner una URL dentro de otra URL. Por ejemplo, si desea publicar un estado en Twitter:

 http://www.twitter.com/intent/tweet?status=What%27s%20up%2C%20StackOverflow%3F(http%3A%2F%2Fwww.stackoverflow.com) 

Hay muchos caracteres reservados en mi Tweet, a saber ?'():/ , Así que codifiqué todo el valor del parámetro de URL de status . Esto también es útil cuando se usa mailto: enlaces que tienen un cuerpo de mensaje o asunto, porque necesita codificar el body y los parámetros del subject para mantener intactos los saltos de línea, los símbolos y símbolos.

Cuando un personaje del conjunto reservado (un “carácter reservado”) tiene un significado especial (un “propósito reservado”) en un contexto determinado, y un esquema de URI dice que es necesario usar ese carácter para algún otro propósito, entonces el personaje debe estar porcentualmente codificado La encoding porcentual de un carácter reservado implica convertir el carácter a su valor de bytes correspondiente en ASCII y luego representar ese valor como un par de dígitos hexadecimales. Los dígitos, precedidos por un signo de porcentaje (“%”) que se usa como un carácter de escape, se usan luego en el URI en lugar del carácter reservado. (Para un carácter que no sea ASCII, generalmente se convierte a su secuencia de bytes en UTF-8, y luego cada valor de bytes se representa como arriba). El carácter reservado “/”, por ejemplo, si se usa en el componente “ruta” de un URI, tiene el significado especial de ser un delimitador entre segmentos de ruta. Si, de acuerdo con un esquema de URI dado, “/” necesita estar en un segmento de ruta, entonces los tres caracteres “% 2F” o “% 2f” deben usarse en el segmento en lugar de un “/” sin formato.

http://en.wikipedia.org/wiki/Percent-encoding#Percent-encoding_reserved_characters

Intenta usar http://www.mysite.com?candy_name=M%26M .

Ver también esta referencia y algo más de información en wikipedia .

Puede usar el carácter% para ‘escapar’ de caracteres que no están permitidos en las URL. Ver RFC1738 .

Una tabla de valores ascii está aquí: http://www.asciitable.com/

Puedes ver & es 26 en hexágono – entonces lo que necesitas es M% 26M

 // this may help if someone want by php $variable ="candy_name=M&M"; $variable = str_replace("&","%26",$variable ); 

Si no puede usar ninguna biblioteca para codificar el valor, http://www.urlencoder.org/ o http://www.urlencode-urldecode.com/ o …

Simplemente ingrese su valor “M & M”, no la URL completa 😉

Puede pasar sus argumentos utilizando esta función encodeURIComponent para que no tenga que preocuparse por pasar ningún carácter especial.

 data: "param1=getAccNos&param2="+encodeURIComponent('Dolce & Gabbana') OR var someValue = 'Dolce & Gabbana'; data : "param1=getAccNos&param2="+encodeURIComponent(someValue) 

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/encodeURIComponent