Esto no solo se aplica al ampersand en las URL, sino a todos los caracteres reservados . Algunos de los cuales incluyen:
# $ & + , / : ; = ? @ [ ]
La idea es la misma 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 codificación 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, es decir ?'():/
, codifiqué todo el valor del status
parámetro URL. Esto también es útil cuando se usan mailto:
enlaces que tienen un cuerpo o asunto de mensaje, porque necesita codificar los parámetros body
y subject
para mantener intactos los saltos de línea, los símbolos de unión, etc.
Cuando un carácter del conjunto reservado (un "carácter reservado") tiene un significado especial (un "propósito reservado") en un determinado contexto, y un esquema URI dice que es necesario usar ese carácter para algún otro propósito, entonces el carácter debe estar codificado en porcentaje. La codificación porcentual de un carácter reservado implica convertir el carácter a su valor de byte 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 carácter de escape, se usan en el URI en lugar del carácter reservado. (Para un carácter no ASCII, generalmente se convierte a su secuencia de bytes en UTF-8, y luego cada valor de byte se representa como anteriormente.) El carácter reservado "/", por ejemplo, si se usa en la "ruta" componente 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