Java / Scala对URL中的中文进行UrlEncode
有些中文或者有空格的URL需要 encode 方能进行请求
使用 java.net.URLEncoder 会把所有特殊字符都编码 不可行
import java.net.{URL, URLEncoder}
val url = "http://www.baidu.com/s=你好"
URLEncoder.encode(url, StandardCharsets.UTF_8.toString)
// http%3A%2F%2Fwww.baidu.com%2Fs%3D%E4%BD%A0%E5%A5%BD
利用正则找出中文进行替换 可行
/**
* 将 URL 中的中文 Encode
* @param url
* @return
*/
def urlEncodeChinese(url:String): String = {
val a2 = "[\u4e00-\u9fa5]".r.findAllIn(url).toList
var tmp = url
for (x <- a2) {
tmp = tmp.replace(x, URLEncoder.encode(x, StandardCharsets.UTF_8.toString))
}
tmp
}
val url = "http://www.baidu.com/s=你好"
urlEncodeChinese(url)
// http://www.baidu.com/s=%E4%BD%A0%E5%A5%BD
使用 Apache 工具包 好用!
import org.apache.commons.httpclient.util.URIUtil
val url = "http://www.baidu.com/s=你好"
println(URIUtil.encodeQuery(url))
// http://www.baidu.com/s=%E4%BD%A0%E5%A5%BD