java.net.URLEncoder.encode将空格编码为+,但我需要%20

15

如标题所述:哪个编码器可以给我空格,而不是+? 我需要它用于Android。 java.net.URLEncoder.encode会返回+

答案:如题所述,java.net.URLDecoder.decode() 方法会将空格转换为 %20 而不是 +
2个回答

26

安卓有自己的 Uri 类,您可以使用它。

例如:

String url = Uri.parse("http://www.google.com").buildUpon()
    .appendQueryParameter("q", "foo bar")
    .appendQueryParameter("xml", "<Hellö>")
    .build().toString();

导致

http://www.google.com?q=foo%20bar&xml=%3CHell%C3%B6%3E

Uri 使用UTF-8编码方案将给定字符串中的字符转换成'%'-转义的八进制数。字母("A-Z", "a-z"),数字("0-9")和未保留字符("_-!.~'()*")不会被转换。

注意: 只有 _-.*URLEncoder 视为未保留字符。!~'()会被转换成 %21%7E%27%28%29


1
你必须自己替换+
示例:
System.out.println(java.net.URLEncoder.encode("Hello World", "UTF-8").replace("+", "%20"));

更多内容请查看此帖子:

URLEncoder 无法转换空格字符


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接