Isso não se aplica apenas ao e comercial nos URLs, mas a todos os caracteres reservados . Alguns dos quais incluem:
# $ & + , / : ; = ? @ [ ]
A idéia é a mesma que codificar um &
em um documento HTML, mas o contexto mudou para estar dentro do URI, além de estar dentro do documento HTML. Portanto, a codificação percentual evita problemas com a análise dentro dos dois contextos.
O lugar em que isso é útil é quando você precisa colocar um URL dentro de outro URL. Por exemplo, se você deseja postar um status no Twitter:
http://www.twitter.com/intent/tweet?status=What%27s%20up%2C%20StackOverflow%3F(http%3A%2F%2Fwww.stackoverflow.com)
Existem muitos caracteres reservados no meu Tweet, ou seja ?'():/
, codifiquei todo o valor do status
parâmetro URL. Isso também é útil ao usar mailto:
links que possuem um corpo ou assunto da mensagem, porque você precisa codificar os parâmetros body
e subject
para manter intactas as quebras de linha, oe comercial, etc.
Quando um caractere do conjunto reservado (um "caractere reservado") tem um significado especial (um "objetivo reservado") em um determinado contexto, e um esquema de URI diz que é necessário usar esse caractere para algum outro propósito, então o caractere deve ser codificado em porcentagem. A codificação percentual de um caractere reservado envolve a conversão do caractere em seu valor de bytes correspondente em ASCII e a representação desse valor como um par de dígitos hexadecimais. Os dígitos, precedidos por um sinal de porcentagem ("%") usado como caractere de escape, são usados no URI no lugar do caractere reservado. (Para um caractere não ASCII, ele normalmente é convertido em sua sequência de bytes em UTF-8 e, em seguida, cada valor de byte é representado como acima.) O caractere reservado "/", por exemplo, se usado no "caminho" componente de um URI, tem o significado especial de ser um delimitador entre os segmentos de caminho. Se, de acordo com um determinado esquema de URI, "/" precisar estar em um segmento de caminho, os três caracteres "% 2F" ou "% 2f" deverão ser usados no segmento em vez de um "/" bruto.
http://en.wikipedia.org/wiki/Percent-encoding#Percent-encoding_reserved_characters