fuite de l’esperluette dans l’url

J’essaie d’envoyer un message GET qui contient des chaînes avec des esperluettes et ne peut pas comprendre comment échapper à l’esperluette dans l’URL.

Exemple:

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

J’ai aussi essayé:

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

J’utilise les urls manuellement donc j’ai juste besoin des caractères corrects.

Je ne peux utiliser aucune bibliothèque. Comment ceci peut être fait?

Ils doivent être encodés en pourcentage:

 > encodeURIComponent('&') "%26" 

Donc, dans votre cas, l’URL ressemblerait à ceci:

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

Cela ne s’applique pas uniquement à la perluète dans les URL, mais à tous les caractères réservés . Certains comprennent:

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

L’idée est identique à l’encodage d’un & dans un document HTML, mais le contexte a été modifié pour être intégré à l’URI, en plus d’être dans le document HTML. Ainsi, l’encodage en pourcentage évite les problèmes d’parsing syntaxique dans les deux contextes.

L’endroit où cela est très utile est lorsque vous devez placer une URL dans une autre URL. Par exemple, si vous souhaitez publier un statut sur Twitter:

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

Il y a beaucoup de caractères réservés dans mon Tweet, à savoir ?'():/ , J’ai donc encodé la valeur entière du paramètre URL d’ status . Cela est également utile lorsque vous utilisez mailto: liens qui ont un corps de message ou un sujet, car vous devez encoder les parameters body et subject pour que les sauts de ligne, les esperluettes, etc. restnt intacts.

Lorsqu’un caractère de l’ensemble réservé (un “caractère réservé”) a une signification particulière (un “object réservé”) dans un certain contexte, et qu’un schéma d’URI indique qu’il est nécessaire d’utiliser ce caractère à d’autres fins, le caractère doit être codé en pourcentage. Le codage en pourcentage d’un caractère réservé implique la conversion du caractère en valeur d’octet correspondante en ASCII, puis représente cette valeur sous la forme d’une paire de chiffres hexadécimaux. Les chiffres, précédés d’un signe de pourcentage (“%”) utilisé comme caractère d’échappement, sont ensuite utilisés dans l’URI à la place du caractère réservé. (Pour un caractère non-ASCII, il est généralement converti en sa séquence d’octets dans UTF-8, puis chaque valeur d’octet est représentée comme ci-dessus.) Le caractère réservé “/”, par exemple, s’il est utilisé dans le composant “chemin” d’un URI, a la signification particulière d’être un délimiteur entre les segments de chemin. Si, selon un schéma d’URI donné, “/” doit se trouver dans un segment de chemin, les trois caractères “% 2F” ou “% 2f” doivent être utilisés dans le segment au lieu d’un “/” brut.

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

Essayez d’utiliser http://www.mysite.com?candy_name=M%26M .

Voir aussi cette référence et quelques informations supplémentaires sur wikipedia .

Vous pouvez utiliser le caractère% pour «échapper» aux caractères non autorisés dans les URL. Voir RFC1738 .

Un tableau des valeurs ascii est ici: http://www.asciitable.com/

Vous pouvez voir et est 26 en hexadécimal – vous avez donc besoin de M% 26M

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

Si vous ne pouvez utiliser aucune bibliothèque pour encoder la valeur, http://www.urlencoder.org/ ou http://www.urlencode-urldecode.com/ ou …

Il suffit d’entrer votre valeur “M & M”, pas l’URL complète 😉

Vous pouvez plutôt passer vos arguments en utilisant cette fonction encodeURIComponent pour ne pas avoir à vous soucier de transmettre des caractères spéciaux.

 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