很多时候,请求方编码和接口编码不一样导致乱码。
这个方法可以做到,自动解码乱码。
其实乱码转中文还好点。
只需要:String str = new String(str.getBytes("ISO-8859-1"),"UTF-8");
但是,如果你贸然对中文执行上面的代码,反而会吧中文变成乱码。
所以我们需要判断接收到的是不是乱码。
所以我们组合下:
定义一个方法: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参数是乱码:
如果是正常的中文: