我在android中执行服务调用功能。
在以下URL(字符串)中,我需要将" "
(空格)替换为%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");
但它没有改变我不知道为什么。
请帮帮我..
答案 0 :(得分: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
答案 1 :(得分:2)
你应该使用URLEncoder:
String url = URLEncoder.encode(url, "UTF-8");
答案 2 :(得分:1)
如果您使用字符串形式的url,则字符串是不可变的,因此您必须将替换的字符串分配给新字符串。
String url = theOriginalUrlString.replaceAll(" ", "%20");
替换会反映在新字符串中。
答案 3 :(得分: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");
应编码而不是解码。