URL 参数编解码详解

下表中列出了一些URL特殊符号及编码 

+ URL 中+号表示空格 %2B
空格 URL中的空格可以用+号或者编码 %20
/ 分隔目录和子目录 %2F
? 分隔实际的URL和参数 %3F
% 指定特殊字符 %25
# 表示书签 %23
& URL 中指定的参数间的分隔符 %26
= URL 中指定参数的值 %3D

很容易理解字符/ ? % # & =是url的保留字符,/是地址分隔符,?后面接参数串,#表示书签,&参数间分隔符,=指定参数值,
如果参数值,参数名或者地址里面里有上述字符需要转义,形式是%+十六进制数字的形式,所以%也是保留字符。

空格其实可以不用作为保留字符的,但是各种原因吧,可能为了以后考虑,也要作为保留字符,参数里有空格的话需要转义,转移值是%20,
麻烦就在于application/x-www-form-urlencoded可以把空格转移成+,那么如果参数值里确实含有+怎么办?所以+也要作为保留字符。

如果空格和其他保留字符一样都转义成%XX的型式就没多那么多歧义了。

URLEncoder.encode会把空格转成+,有些人再做一次replaceAll(“\\+”, “%20″),将空格强制转成%20。

/?#&= ----> %XX,
%----->%XX,
space---->+或者%20
+------>%XX

Java apache 的HttpClient4 默认会对url参数进行编解码
发布了46 篇原创文章 · 获赞 251 · 访问量 90万+

猜你喜欢

转载自blog.csdn.net/shadow_zed/article/details/105276016