+
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
参考:
《python3 url 编码 解码》 https://blog.csdn.net/whatday/article/details/107435596