Java中可以通过URLEncoder对url编码,但是如果你拿到的uri是别人已经拼好的,这时候你会发现用URLEncoder已经解决不了你的问题了,因为它会把url中所有非ASCII编码的字符都进行编码, 结果往往不是我们想要的。解决该问题简洁实现方法如下:
Uri.encode(String s, String allow)
第一个参数是你要进行encode的字符串, 通常是一个uri ;第二个参数是哪些非ASCII字符是例外, 不对其进行编码
实现了只把需要编码的字符编码, 而避开uri中的这些特殊字符,实现方法如下:
public static String encodeURI(String uri) {
return Uri.encode(uri, ":/-![].,%?&=");
}