URLEncoder.encode
会将包括:/在内的所有字符都进行转换,因此无法直接使用,需要配合正则表达式才能达到目的。
另外,安卓6以上系统使用HttpURLConnection时会针对中文等特殊字符自动转换后访问,无需再使用本函数。
fun replaceChineseCharacters(string: String?) : String? {
//安卓6以上自动转换,无需再用此函数
if (android.os.Build.VERSION.SDK_INT > android.os.Build.VERSION_CODES.M) return string
else return string?.replace(Regex("(?<=/)[\\w\\s\\d\\u4e00-\\u9fa5.-]+(?=/?)")) { match ->
return@replace URLEncoder.encode(match.value, "UTF-8")
}
}