Java中可以通過(guò)URLEncoder對(duì)url編碼拍柒,但是如果你拿到的uri是別人已經(jīng)拼好的症歇,這時(shí)候你會(huì)發(fā)現(xiàn)用URLEncoder已經(jīng)解決不了你的問(wèn)題了输硝,因?yàn)樗鼤?huì)把url中所有非ASCII編碼的字符都進(jìn)行編碼开瞭, 結(jié)果往往不是我們想要的录煤。解決該問(wèn)題簡(jiǎn)潔實(shí)現(xiàn)方法如下:
Uri.encode(String s, String allow)
第一個(gè)參數(shù)是你要進(jìn)行encode的字符串捞稿, 通常是一個(gè)uri ;第二個(gè)參數(shù)是哪些非ASCII字符是例外又谋, 不對(duì)其進(jìn)行編碼
實(shí)現(xiàn)了只把需要編碼的字符編碼, 而避開(kāi)uri中的這些特殊字符,實(shí)現(xiàn)方法如下:
public static String encodeURI(String uri) {
? ? return Uri.encode(uri, ":/-![].,%?&=");
}