1、采用json数据交互,将将后台从数据库查询到的数据用StringBuffer穿成json。
2、设置了response编码格式UTF-8
3、最初用PrintWrite的write()方法把StringBuffer.toString()写出到前台
在eclipse下面没有任何问题(项目是UTF-8的),打成war包部署到Tomcat出现乱码,最初以为是Tomcat的配置问题,最后把eclipse中server项目下Tomcat配置复制到Tomcat-home/config下面。结果还是一样。最后推测是运行时的编码格式不一样,用StringBuffer是char数组实现的,怀疑是在字符串toChar的时候转码了。(查找源码未找到)
解决办法:
OutputStream out = res.getOutputStream();
AppVO vo = new AppVO(status, message, obj);
byte[] bytes = vo.getJson().getBytes("utf-8");
out.write(bytes);
据说byte[]要比char[]快,char存在编码问题。
如果有哪位大侠知道为什么会乱码。请告诉小弟。
时间: 2024-11-10 10:47:10