背景
因为要通过GET方法传URL参数,使用的是Java中java.net.URLEncoder包里的方法,jdk1.8
URLEncoder.encode(text, "UTF-8");
因为参数中可能有空格,所以我认为需要进行URL编码再进行拼接URL。
问题
但是发现拼接的URL和预期不一样。
比如我要传的参数是"apple pie",期望拼接的url是xxx?word=apple%20pie
但是我发现用上面的方法处理后是xxx?word=apple+pie
结论
使用
UriEncoder.encode(text, "UTF-8");
会符合我的预期。
原因
理由是如果media-type是application/x-www-form-urlencoded,则会使用“+”替代%20,因为早期的URL编码使用的是“+”
参考
https://en.wikipedia.org/wiki/Percent-encoding