| 部分保留字符和不安全字符及其URL编码 | |||
|---|---|---|---|
| 字符 | 描述 | 用法 | 编码 | 
| ; | 分号 | 保留 | %3B | 
| / | 斜线 | 保留 | %2F | 
| ? | 问号 | 保留 | %3F | 
| : | 冒号 | 保留 | %3A | 
| @ | “at”符号 | 保留 | %4O | 
| = | 等号 | 保留 | %3D | 
| & | “和”符号 | 保留 | %26 | 
| < | 小于号 | 不安全 | %3C | 
| > | 大于号 | 不安全 | %3E | 
| " | 双引号 | 不安全 | %22 | 
| # | 井号 | 不安全 | %23 | 
| % | 百分号 | 不安全 | %25 | 
| { | 左大括号 | 不安全 | %7B | 
| } | 右大括号 | 不安全 | %7D | 
| | | 竖线 | 不安全 | %7C | 
| \ | 反斜线 | 不安全 | %5C | 
| ^ | 加字号 | 不安全 | %5E | 
| ~ | 波浪 | 不安全 | %7E | 
| [ | 左中括号 | 不安全 | %5B | 
| ] | 右中括号 | 不安全 | %5D | 
| ` | 反单引号 | 不安全 | %60 | 
| 空格 | 不安全 | %20 | |
URL编码在ASCII表中的体现
如何编码?众所周知,字符是可由八位字节数(octet)来表示的,八位字节数可用十六进制来表示它的值。如字符“<”的八位字节数十六进制值是3C。在URL中,字符的编码方式为:“%”加上字符的两个十六进制数值。举几个例子:
- “<”可以被编码为%3C,空格“SP”可被编码为“%20”
- “田”的GB2312编码十六进制值是CC EF,这时“田”的URL编码为%CC%EF
- “囧”的GBK编码十六进制值是87 E5,这时“囧”的URL编码为%87%E5
- “田”的UTF-8编码十六进制值是E7 94 B0,这时“田”的URL编码为%E7%94%B0
RFC1738没有规定汉字的编码方式,而是让浏览器自己去决定,因此造成了URL汉字编码的不统一。经过研究,对于URL中的“查询字符串”和“路径”中包含汉字,不同浏览器有不同的处理。
1. 查询字符串中包含汉字在网址输入:http://www.baidu.com/s?wd=田囧 ,敲击回车,使用Fiddler观察浏览器发出的请求(以IE8和Firefox为例):
查询字符串中含有中文
IE8将汉字作为GBK编码,直接发往服务器(这其实是不符合RFC规范的);Firefox则多了一次加%的操作。Windows操作系统是GBK编码。得到结论,地址栏直接访问URL,汉字作为查询字符串(Query string)时,IE和Firefox会使用系统编码发至服务器端,Firefox会按规矩编码。
2. URL路径中包含汉字注意1:不要用Google进行测试,Google的搜索URL(类似:http://www.google.com/#hl=en&source=hp&q=田囧 ),搜索关键词那里不是查询字符串,因为前面有个#……我开始没注意到,被搞迷茫了很久……
注意2:这只是对URL直接访问的规律。如果页面时从链接点击打开的,例如从A页面含中文的链接打开了B页面,那么浏览器对中文的编码取决于A页面的编码。
在网址直接输入:http://www.hudong.com/wiki/田囧 ,敲击回车,观察请求
路径中含有中文
IE8和Firefox都把汉字作为UTF8,按规范进行了URL编码,还好。
 
                   
                   
                   
                   
                             本文详细介绍了URL中字符的编码规则,包括必须编码的字符类型、常见的保留和不安全字符及其编码方式,并通过实例展示了如何对非ASCII字符进行编码。
本文详细介绍了URL中字符的编码规则,包括必须编码的字符类型、常见的保留和不安全字符及其编码方式,并通过实例展示了如何对非ASCII字符进行编码。
           
       
           
                 
                 
                 
                 
                 
                
               
                 
                 
                 
                 
                
               
                 
                 扫一扫
扫一扫
                     
              
             
                   1913
					1913
					
 被折叠的  条评论
		 为什么被折叠?
被折叠的  条评论
		 为什么被折叠?
		 
		  到【灌水乐园】发言
到【灌水乐园】发言                                
		 
		 
    
   
    
   
             
            


 
            