0

我正在android中做一个服务调用功能。在以下 URL(String) 中,我需要将" "(space)替换为%20

http://dli.ircms.in/complaint.php?complaintno=sarojini nagar/06022014/4

我试过了

URl.replace(" ", "%20")
URl.replaceAll(" ", "%20")
URL sourceUrl = new URL(url);
url = URLDecoder.decode(url, "UTF-8");

但它没有改变我不知道为什么。

请帮我..

4

4 回答 4

4

使用URLDecoder一个,它不起作用,因为您必须编码,而不是解码:

url = URLEncoder.encode(url, "UTF-8");

对于您发布的其他示例,您需要重新分配字符串:

url = url.replace(" ", "%20");
url = url.replaceAll(" ", "%20");

正如 Petter 指出的那样,URLEncoder.encode将添加+而不是%20. 这就是 URLEncoder 的工作原理,但您可以使用

url = URLEncoder.encode(url, "UTF-8").replace("+","%20");

让它按你的意愿工作。

另一种选择是使用Uri该类:

String url = "http://dli.ircms.in/complaint.php";
url = Uri.parse(url).buildUpon().appendQueryParameter("complaintno","sarojini nagar/06022014/4").build().toString();

结果:

http://dli.ircms.in/complaint.php?complaintno=sarojini%20nagar%2F06022014%2F4
于 2014-02-06T14:00:09.420 回答
2

你应该使用 URLEncoder:

String url = URLEncoder.encode(url, "UTF-8");
于 2014-02-06T14:00:32.520 回答
1

如果您以字符串的形式使用 url,则字符串是不可变的,因此您必须将替换的字符串分配给新的字符串。

String url = theOriginalUrlString.replaceAll(" ", "%20");

替换反映在新字符串中。

于 2014-02-06T14:01:48.663 回答
0

尝试这个:

String url = "http://test.com/this is a test";
System.out.println(url);
url = url.replace(" ", "%20");
System.out.println(url);

或者:

String url = URLEncoder.encode(url, "UTF-8");

应该是编码而不是解码。

于 2014-02-06T14:00:46.740 回答