下表中列出了一些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