碰到过不少乱码的情况,做个小结。
文件方面乱码:
项目导入导出到不同的开发环境中出现中文乱码。这种还好处理,就是根据开发环境进行相应的配置,比如说单个文件的编码方式,项目整体的编码方式,或整个开发环境的编码方式。
程序导致的乱码:
碰到这个就有点广泛,不同的开发语言有不同的,编码设置方式,一般来说,注意一下,然后设置就行。
比如说:(简单说明,具体问题具体看)
response.setCharacterEncoding("UTF-8");
但最近一个项目中遇到的乱码实在是搞得我头大,因为是个web项目,被告知可能还有tomcat 的问题,但是改了tomcat的server.xml文件也是没有用。
后来经过检查发现是程序的问题,从数据库中取出(经过base64编码的)字符串再解码出来产生了中文乱码。
遇到这种问题,一开始其实是无从判断的,因为项目并不是一个人开发的,你根本不清楚他编码时候用的编码方式。
String value = dbi.getStrValue("value");
if (data.getBase64() != 0) {
value = new String(Base64.getDecoder().decode(value));
}
上述方法,Base64解码出来的是字节数组,在转为字符串输出时,需要指定一个字符解码方式。
value = new String(Base64.getDecoder().decode(value), "utf-8");
还有其他乱码,以后补充修改。
(如果看官有不同想法建议,欢迎评论指正!)