在因特网上传送URL,只能采用ASCII字符集
,即是常说的get请求只能使用ASCII 字符
也就是说URL只能使用字母和数字[0-9a-zA-Z]、一些特殊符号$-_.+!*’()[不包括双引号]、以及某些保留字(空格转换为+),才可以不经过编码直接用于URL
RFC文档的建议:
这意味着 如果URL中有汉字或者不在ASCII字符集中的特殊符号
,就必须编码后才能使用。
对于非ASCII字符,RFC文档建议
使用utf-8
对其进行编码得到相应的字节,然后对每个字节执行百分号编码
可以看到a!@$%%5E&*() 都可以在ASCII对照表中查得到,而¥符号
在ASCII对照表中是没有的,那么就会进行转换,首先会在UTF-8字符集中找到¥符号的16进制编码,经过Url编码之后得到%EF%BF%A5
。
url编码混乱的原因:
麻烦的是,建议始终都是建议,没有统一的一套标准,难免有些人会不听取建议。
标准的国际组织并没有规定具体的编码方法,而是交给应用程序(浏览器)自己决定。 这导致"URL