接口数据传输时经常把字符串转成byte[] , 经过Base64编码处理。 这里遇到一个问题, 转换后中文乱码。(开发环境正常,生产环境乱码)
String localChartSet = System.getProperty("file.encoding");
System.out.println("localChartSet>>>>"+localChartSet); //查看本地默认字符集
String str ="aaaa中文的";
byte[] gbkbt = str.getBytes("GB2312");
byte[] utfbt = str.getBytes("utf-8");
byte[] bt = str.getBytes();
String gbkstr= new String(gbkbt, "GB2312"); //string 与byte[] 转换时字符集要保持一致
String utfstr= new String(utfbt, "utf-8");
str= new String(bt);
System.out.println("gbkstr>>>>"+gbkstr);
System.out.println("utfstr>>>>"+utfstr);
System.out.println("str>>>>"+str);
gbkstr= new String(gbkbt, "utf-8"); //转换时字符集要保持一致 否则中文会出乱码
utfstr= new String(utfbt, "GB2312");
str= new String(bt, "GB2312");
System.out.println("gbkstr>>>>"+gbkstr);
System.out.println("utfstr>>>>"+utfstr);
System.out.println("str>>>>"+str);
new String(gbkbt, "GB2312"); //<span style="font-size:18px;">为了防止乱码, 尽量采用这种方式 </span>
本文探讨了在接口数据传输过程中将字符串转换为字节数组并使用Base64编码时出现中文乱码的问题,并提供了解决方案。通过检查本地默认字符集、正确设置编码方式及确保转换前后字符集一致性,可以有效避免乱码现象。

197

被折叠的 条评论
为什么被折叠?



