android字符串转换成uri,android - Java - 将String转换为有效的URI obj

在Android中,将包含特殊字符的String转换为java.net.URI对象时,需要正确编码URL。常见做法是使用Uri类的静态方法encode()进行编码。本文列举了多种解决方案,包括使用Apache HttpClient库的URIUtil.encodeQuery()方法,以及直接使用Android SDK中的Uri类进行编码。这些方法可以确保字符串转换为有效的URI,避免特殊字符导致的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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用户添加一个建议。 您可以这样做,避免必须获得任何外部库。 此外,在上面的一些答案中建议的所有搜索/替换字符解决方案都是危险的,应该避免。

<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值