接口数据传输时经常把字符串转成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>