下表中列出了一些URL特殊符号及编码 html
+ | URL 中+号表示空格 | %2B |
空格 | URL中的空格能够用+号或者编码 | %20 |
/ | 分隔目录和子目录 | %2F |
? | 分隔实际的URL和参数 | %3F |
% | 指定特殊字符 | %25 |
# | 表示书签 | %23 |
& | URL 中指定的参数间的分隔符 | %26 |
= | URL 中指定参数的值 | %3D |
很容易理解字符/ ? % # & =是url的保留字符,/是地址分隔符,?后面接参数串,#表示书签,&参数间分隔符,=指定参数值,
若是参数值,参数名或者地址里面里有上述字符须要转义,形式是%+十六进制数字的形式,因此%也是保留字符。app
空格其实能够不用做为保留字符的,可是各类缘由吧,可能为了之后考虑,也要做为保留字符,参数里有空格的话须要转义,转移值是%20,
麻烦就在于application/x-www-form-urlencoded能够把空格转移成+,那么若是参数值里确实含有+怎么办?因此+也要做为保留字符。post
若是空格和其余保留字符同样都转义成%XX的型式就没多那么多歧义了。编码
URLEncoder.encode会把空格转成+,有些人再作一次replaceAll(“\\+”, “%20″),将空格强制转成%20。url
/?#&= ----> %XX,
%----->%XX,
space---->+或者%20
+------>%XXspa
参考:.net
https://blog.csdn.net/oqqquzi1234567/article/details/43409737code
https://blog.csdn.net/foxpeter/article/details/23475293orm
https://zh.wikipedia.org/wiki/%E7%99%BE%E5%88%86%E5%8F%B7%E7%BC%96%E7%A0%81htm
http://reason2003.iteye.com/blog/719682