引言
在编程的过程中,我们经常会遇到中文显示乱码问题,下面是我对这类问题的总结及解决办法。
内容分类:
在现代编程中,设计上分层,最常见的就是B/S架构,它分为客户端(浏览器)、web层、JavaBean、数据库。
要想解决这类问题首先要确定你的原始数据是从哪里来的(一般的是数据库):
- 检查数据库中数据是否是乱码。以MySQL为例,因为在你向数据库中插入数据的时候就可能是乱码,即用select语句查看数据如果显示正常进入第二步,否则检查数据库编码,至正常为止。
- 检查数据从数据库转到Java程序中那段代码。该问题就和你的开发环境和数据库服务器结果集的编码有关,例如MyEclipse开发环境、MySQL数据库。一般MyEclipse开发环境是以UTF-8的形式编码的,而数据库是以Iatin1,就是ISO-8859-1的形式编码的,这样当然会显示乱码。解决的办法是自己写个转换器,即
public static String changeCharacter(String src){
String s=new String(src.getBytes("ISO-8859-1"),"GBK");
retrun s;
}
这样在需要的地方调用就可以了。
- 检查web层的编码,即servlet。它又分为两种情况:一种是服务器响应时产生的乱码问题,代码为:
response.setContentType("text/html,charset=gb2312")
另一种是客户端浏览器解析时产生乱码:查看操作为右键—>编码—>选择编码的字符集。因为在浏览器与web服务器交互时,两台机器之间使用unicode编码的。