Saltar al contenido

Escape de ampersand en URL

Después de consultar con expertos en la materia, programadores de diversas áreas y profesores hemos dado con la respuesta al dilema y la dejamos plasmada en este post.

Solución:

Deben estar codificados en porcentaje:

> encodeURIComponent('&')
"%26"

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

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

Esto no lo hace solo aplicar 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. Por lo tanto, la codificación porcentual evita problemas con el análisis dentro de ambos contextos.

El lugar donde esto resulta muy útil es cuando necesita colocar 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 de la status parámetro de URL. Esto también es útil cuando se utiliza mailto: enlaces que tienen un cuerpo de mensaje o asunto, porque necesita codificar el body y subject parámetros 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 contexto determinado, 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 que no es ASCII, generalmente se convierte a su secuencia de bytes en UTF-8, y luego cada valor de byte se representa como se indica 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, “/” debe estar en un segmento de ruta, entonces los tres caracteres “%2F” o “%2f” deben usarse en el segmento en lugar de un “/” sin procesar.

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

Intenta usar http://www.example.org?candy_name=M%26M.

Consulte también esta referencia y más información en Wikipedia.

Aquí puedes ver las comentarios y valoraciones de los lectores

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *