这不仅适用于 URL 中的 & 符号,还适用于所有保留字符。其中一些包括:
# $ & + , / : ; = ? @ [ ]
这个想法与在 HTML 文档中编码 an 相同&
,但上下文已更改为在 URI 内,除了在 HTML 文档内。因此,百分比编码可以防止在两个上下文中解析的问题。
当您需要将一个 URL 放在另一个 URL 中时,这会派上用场。例如,如果您想在 Twitter 上发布状态:
http://www.twitter.com/intent/tweet?status=What%27s%20up%2C%20StackOverflow%3F(http%3A%2F%2Fwww.stackoverflow.com)
我的推文中有很多保留字符,即,因此我对URL 参数?'():/
的整个值进行了编码。这在使用具有消息正文或主题的链接status
时也很有帮助,因为您需要对and参数进行编码以保持换行符、& 符号等完好无损。mailto:
body
subject
当保留集中的字符(“保留字符”)在特定上下文中具有特殊含义(“保留目的”),并且 URI 方案表明有必要将该字符用于其他目的时,则该字符必须是百分比编码的。对保留字符进行百分比编码涉及将字符转换为其对应的 ASCII 字节值,然后将该值表示为一对十六进制数字。然后在 URI 中使用用作转义字符的百分号 ("%") 前面的数字代替保留字符。(对于非 ASCII 字符,一般会转换成其 UTF-8 中的字节序列,然后每个字节值如上所示。) 保留字符“/”,例如,如果在“路径”中使用 URI 的组成部分,具有作为路径段之间分隔符的特殊含义。如果根据给定的 URI 方案,“/”需要在路径段中,则必须在段中使用三个字符“%2F”或“%2f”而不是原始“/”。
http://en.wikipedia.org/wiki/Percent-encoding#Percent-encoding_reserved_characters