中文乱码问题总结

原创 2007年10月15日 17:22:00

众所周知,计算机只认识二进制的数字, 那么所谓各种字符的编码,其实就是对二进制数据的某种约定。如,ASCL、ISO8859-1、GBK、Unicode、UTF-8。而乱码的产生就是在不同字符集转换的过程中出现的。我们先看看一个转换的简单流程,如java,内部使用的是Unicode编码,当JVM读取到中文时,它把GBK转化成Unicode进行处理,处理完输出时,再转化成GBK,读与写这两个过程是可逆的,按理不会产生乱码。

但实际应用的情况就比较复杂,在WEB应用中,包括了浏览器,服务器,应用程序,数据库等等,它们之间的编码可能各不相同,没有一个合理的转换机制,乱码就产生了。比较常见的如,表单提交的默认字符串是以ISO-8859-1转化来的,ISO-8859-1不支持中文,由于找不到相应的编码,就会产生乱码。解决的办法可以在提交参数前调用request.setCharacterEncoding("gbk").另外数据库的编码与浏览器的编码不一致也是经常看到的产生乱码的原因。可以根据具体情况,了解其编码转变的过程,即可发现问题,解决问题。

收藏助手
不良信息举报
您举报文章:中文乱码问题总结
举报原因:
原因补充:

(最多只允许输入30个字)