首先:协议规范,RFC 1738,定义url地址中不能包含除:0-9,a-zA-Z,- 之外的字符,即,如URL中包含特殊字符,如$-_.+!*’(), 都要编码. 关于为什么如此定义,有如下几个原因: 1.本身html代码中,很多特殊字符,其本身的特殊含义,比如’#',就适用于定位html( anchor),所以这类本身有特殊含义的字符,不能直接用于发送,需要编码. 2.如果其中本身就包含一些,非打印的控制字符,那么无法正常打印显示,所以必须被编码才能传输.ASCII字符集中的功能/控制字符.