URL编码,空格和+
2018-08-06 15:26 Dirichlet 阅读(6509) 评论(0) 编辑 收藏 举报下表中列出了一些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
参考:
https://blog.csdn.net/oqqquzi1234567/article/details/43409737
https://blog.csdn.net/foxpeter/article/details/23475293
https://zh.wikipedia.org/wiki/%E7%99%BE%E5%88%86%E5%8F%B7%E7%BC%96%E7%A0%81
http://reason2003.iteye.com/blog/719682