Cela ne s'applique pas seulement à l'esperluette dans les URL, mais à tous les caractères réservés . Certains comprennent:
# $ & + , / : ; = ? @ [ ]
L'idée est la même que l'encodage d'un &
dans un document HTML, mais le contexte a changé pour être dans l'URI, en plus d'être dans le document HTML. Ainsi, l'encodage en pourcentage empêche les problèmes d'analyse syntaxique à l'intérieur des deux contextes.
L'endroit où cela est très utile est lorsque vous devez mettre une URL à l'intérieur d'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é toute la valeur du status
paramètre URL. Cela est également utile lorsque vous utilisez des mailto:
liens qui ont un corps ou un objet de message, car vous devez coder les paramètres body
et subject
pour conserver les sauts de ligne, les esperluettes, etc.
Lorsqu'un caractère de l'ensemble réservé (un "caractère réservé") a une signification spéciale (un "objectif 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, alors le caractère doit être codé en pourcentage. L'encodage en pourcentage d'un caractère réservé implique de convertir le caractère en sa valeur d'octet correspondante en ASCII, puis de représenter cette valeur sous la forme d'une paire de chiffres hexadécimaux. Les chiffres, précédés d'un signe de pourcentage ("%") qui est 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 en 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 "chemin" composant 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 être dans un segment de chemin, alors 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