下表中列出了一些URL特殊符号及编码
很容易理解字符/ ? % # & =是url的保留字符,/是地址分隔符,?后面接参数串,#表示书签,&参数间分隔符,=指定参数值,
如果参数值,参数名或者地址里面里有上述字符需要转义,形式是%+十六进制数字的形式,所以%也是保留字符。
空格其实可以不用作为保留字符的,但是各种原因吧,可能为了以后考虑,也要作为保留字符,参数里有空格的话需要转义,转移值是%20,
麻烦就在于application/x-www-form-urlencoded可以把空格转移成+,那么如果参数值里确实含有+怎么办?所以+也要作为保留字符。
如果空格和其他保留字符一样都转义成%XX的型式就没多那么多歧义了。
URLEncoder.encode会把空格转成+,有些人再做一次replaceAll(“\\+”, “%20″),将空格强制转成%20。
/?#&= ----> %XX,
%----->%XX,
space---->+或者%20
+------>%XX
Java apache 的HttpClient4 默认会对url参数进行编解码