15

正如标题所说:哪个编码器会给我空间%20而不是+?我需要它的安卓。java.net.URLEncoder.encode 给出+

4

2 回答 2

26

Android 有它自己的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 方案将给定字符串中的字符编码为“%”转义的八位字节。保留字母(“AZ”、“az”)、数字(“0-9”)和未保留的字符(“_-!.~'()*”)不变。

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

于 2013-08-19T21:37:12.530 回答
1

You have to replace the + by yourself.

Example:

System.out.println(java.net.URLEncoder.encode("Hello World", "UTF-8").replace("+", "%20"));

For more look at this post:

URLEncoder not able to translate space character

于 2013-08-19T21:22:52.103 回答