乱码的产生原因
1.一般是软件程序解码错误。如浏览器把GBK码当成是Big5码显示,或电子邮件程序把对方传来的邮件错误解码。如果在发送时编码错误,收件者的电邮程序是不能解码的,需要寄件者的电邮程序重新编码再寄。
2.字体档案(font file)不对。
3.来源编码错误,或文件受到破坏。
4.一种语言版本的操作系统安装了另外一种语言版本的应用程序,或者应用程序安装的升级补丁的语言版本与应用程序原来安装的语言版本不一致。
5.早期单字节的应用程序在打开双字节语言的文件时不能正确识别文字的分割,在换行的地方把一个字从中分成两段,导致紧接在后面的整个一行全部都是乱码。
6.低版本的应用程序不能识别高版本的程序创建的文件。
7.由于TXD等修改文件出现内部冲突,一些修改游戏的MOD(modification)CLEO、IV补丁、真实补丁、技能补丁、升级补丁和CCI人物补丁等游戏修改软件的“Readme”“必看!”等阅读文件会出现乱码。
8.电脑软件的错误操作也会导致整个文件出现乱码
9.数据库原因:
1 数据正确,但数据库配置错误,使用了错误的字符集。一般是数据库移植,还原时DBA的错误造成的。
2 数据正确,但拿到的数据错误。
一般是客户端使用了默认的字符集,比如在GBK的机器上开发,但换到Linux下面就出现读取的数据为乱码了。
解决方法是:在连接参数里面明确指定数据传输用的字符集,而不是使用操作系统默认的。
3 数据错误。一般是客户端发来的数据编码问题。比如页面发送数据是UTF-8,可是后台处理程序是GBK的,结果造成保存到数据库的数据为乱码。
解决方法:所有字符集编码都采用统一的编码。比如全部用GBK的。