对url进行中文编码
有时候需要访问一些带有中文字符的网站,但是如果直接重定向的话会导致中文在浏览器的地址栏显示为????
此时使用正则表达式找出所有的中文字符,然后使用urlEncoder进行编码,然后拼接处最后的url
@RequestMapping("/redirect")
public ModelAndView redirect() throws UnsupportedEncodingException {
String url = "https://www.你好UTF-8.com/?u=世界";
String encoded = encode(url);
System.out.println(encoded);
return new ModelAndView(new RedirectView(encoded));
}
public static String encode(String url)
{
try {
Matcher matcher = Pattern.compile("[\\u4e00-\\u9fa5]").matcher(url);
int count = 0;
while (matcher.find()) {
//System.out.println(matcher.group());
String tmp=matcher.group();
url=url.replaceAll(tmp,java.net.URLEncoder.encode(tmp,"gbk"));
}
// System.out.println(count);
//url = java.net.URLEncoder.encode(url,"gbk");
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return url;
}