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