Java - 将字符串转换为有效的 URI 对象

2022-08-31 13:27:10

我正在尝试从 .该字符串包含一些字符,这些字符需要替换为其百分比转义序列。但是当我使用URLEncoder用UTF-8编码对字符串进行编码时,甚至/也被替换为它们的转义序列。java.net.URIString

如何从 String 对象获取有效的编码 URL?

http://www.google.com?q=a b 给出 http%3A%2F%2www.google.com...而我希望输出是 http://www.google.com?q=a%20b

有人可以告诉我如何实现这一目标吗?

我正在尝试在Android应用程序中执行此操作。因此,我可以访问有限数量的库。


答案 1

你可以试试:在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解析可能会变得非常混乱...


答案 2

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"));

推荐