Java接受请求参数中文乱码的终极代码(自动识别乱码)

很多时候,请求方编码和接口编码不一样导致乱码。这个方法可以做到,自动解码乱码。其实乱码转中文还好点。只需要:String str = new String(str.getBytes("ISO-8859-1...

很多时候,请求方编码和接口编码不一样导致乱码。

这个方法可以做到,自动解码乱码。

其实乱码转中文还好点。

只需要:

String str = new String(str.getBytes("ISO-8859-1"),"UTF-8");

但是,如果你贸然对中文执行上面的代码,反而会吧中文变成乱码。

image.png

所以我们需要判断接收到的是不是乱码。

还好我前文介绍了判断方法:终极判断字符串中是否包含乱码的方法(亲测可用)


所以我们组合下:

定义一个方法:

public static boolean hasMessyCode(String str){
	return !java.nio.charset.Charset.forName("GBK").newEncoder().canEncode(str);
}
if(hasMessyCode(name)){
	name = new String(name.getBytes("iso-8859-1"),"UTF-8");
	System.out.println("发现转码,转码后的数据:"+name);
}
System.out.println(name);

如果我们给的name参数是乱码:

image.png

image.png


如果是正常的中文:

image.png

image.png



  • 发表于 2018-03-14 20:57
  • 阅读 ( 2243 )
  • 分类:Java基础

条评论

请先 登录 后评论
不写代码的码农
三叔

422 篇文章

作家榜 »

  1. 小编 文章
返回顶部
部分文章转自于网络,若有侵权请联系我们删除