Android编码包含中文的URI

做过Java的都知道,Java中可以通过URLEncoder对url编码, 但是如果你拿到的uri是别人已经拼好的, 比如是服务端返回的uri, 这时候你会发现用URLEncoder已经解决不了你的问题了,因为它会把url中所有非ASCII编码的字符都进行编码, 结果不是我们想要的。

要解决此问题有很多种办法,比如通过正则替换, 递归遍历字符替换等。 我这里要说的是一个最简捷的实现。用到的类:android.net.Uri

方法:

Uri.encode(String s, String allow)

第一个参数是你要进行encode的字符串, 通常是一个uri
第二个参数是哪些非ASCII字符是例外, 不对其进行编码

实现如下:

public static String encodeURI(String uri) {
    return Uri.encode(uri, ":/-![].,%?&=");
}

这样, 我们实现了只把需要编码的字符编码, 而避开uri中的这些特殊字符了

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值