android - Java - 将String转换为有效的URI obj
我试图从String获取一个java.net.URI对象。该字符串有一些字符需要用它们的百分比转义序列替换。 但是当我使用URLEncoder对UTF-8编码的字符串进行编码时,即使/被替换为它们的转义序列。
如何从String对象获取有效的编码URL?
[http://www.google.com?q=a] b提供http%3A%2F%2www.google.com ...而我希望输出为[http://www.google.com?q= A%20B]
有人可以告诉我如何实现这一目标。
我试图在Android应用程序中执行此操作。 所以我可以访问有限数量的库。
11个解决方案
55 votes
您可以尝试在Apache commons-httpclient项目中使用:org.apache.commons.httpclient.util.URIUtil.encodeQuery
像这样(参见URIUtil):
URIUtil.encodeQuery("http://www.google.com?q=a b")
会变成:
http://www.google.com?q=a%20b
你当然可以自己做,但URI解析可能会变得非常混乱......
Hans Doggen answered 2019-06-13T07:24:31Z
45 votes
Android一直将Uri类作为SDK的一部分:[http://developer.android.com/reference/android/net/Uri.html]
您可以简单地执行以下操作:
String requestURL = String.format("http://www.example.com/?a=%s&b=%s", Uri.encode("foo bar"), Uri.encode("100% fubar'd"));
bensnider answered 2019-06-13T07:25:10Z
33 votes
我将在这里针对Android用户添加一个建议。 您可以这样做,避免必须获得任何外部库。 此外,在上面的一些答案中建议的所有搜索/替换字符解决方案都是危险的,应该避免。
<