JAVA跨包调用工具类返回值乱码

问题遇到的现象和结果

img

由上红色所示,打印出来的值 如下 是乱码的。

img

而同文件里 进行测试 得到的结果却** 不是乱码**的。

img

问题?

为什么上面servlet里面调用工具类.getRegionData得到结果是乱码,在下方test测试中得到结果就不是乱码?

String areaName=“我是gbk”;//GBK编码
 String iso=new String (areaName.getBytes (StandardCharsets.UTF_8), StandardCharsets.ISO_8859_1);
 areaName=new String (iso.getBytes (StandardCharsets.ISO_8859_1),StandardCharsets.UTF_8);

利用ISO作为中间转码方式,将GBK无损转换为utf-8,这样就对了。 否则会损失。

我之前的那个城市地址是放在json中通过工具类.getRegionData获取的,但是之前也没保证json文件的编码方式是GBK,(IDEA转换文件编码时操作失误)搞了半天。

 byte[] bytes = regionData.toString ().getBytes ("gbk");
  System.out.println ("regionData = " +new String (bytes,StandardCharsets.UTF_8));

加了两行代码,结果是这样

img

但为什么在servlet里调用就会乱码。

你的城市地址 是在配置文件中配置的吗? 我猜测 应该是你的城市地址采用的字符集与代码使用的不是一个字符集造成的。