中文乱码问题产生的由来
在计算机中,只有二进制的数据,不管数据是在内存中,还是在外部设备上。
对于我们所看到的字符,也是以二进制数据的形式存在的。不同的字符对应的
二进制数的规则,就是字符的编码。字符编码的集合称为字符集。
常用的字符集
1 ASCII
2 ISO8859-1
3 GB2312和GBK
每个国家(或者区域)都规定了计算机信息交换用的字符编码集,这就造成了
交流上的困难。想象一下,你发送一封中文邮件给一位远在西班牙的朋友,当邮件
通过网络发送出去的时候,你所书写的中文字符会按照本地的字符集GBK转换成二进制
编码数据,然后发送出去。当你的朋友接收以邮件(二进制数据)后,查看信件时,会
按照他所用的系统的字符集,将二进制数据解码为字符,然而由于两种字符集之间编码
规则的不同,导致转换出现乱码。这是因为,在不同的字符集之间,同样的数字可能对
应了不同的符号,也可能在另一种字符集中,该数字没也对应的符号。
为解决上述问题,统一全世界的字符编码,由Unicode协会制定并发布了Unicode编码。
4 Unicode
5 UTF-8
对乱码产生过程的分析
字符数据在各种不同的字符集之间转换时,就有可能会出现乱码。
xml处理器在没有被预先通知的情况下会默认文档数据为UTF-8格式。
这样在你书写xml文档时,就存在了UTF-8字符集和本地字符进行转换的过程。
当向xml文档中写入数据的时候,需要将本地字符集编码的数据转换为UTF-8
,而在输出字符数据的时候,则需要将UTF-8编码转换为本地字符集编码。
从上述的过程来看,写入和输出的过程是可逆的。理应不会出现中文乱码问题
然而,实际应用的情形,比上述的过程要复杂的多。在WEB应用中,通过都包括
浏览器、WEB服务器、WEB应用程序和数据库等部分,每一部分的都有可能使用不
同的字符集,从而导致数据在各种字符之间转换时,出现了乱码问题。
posted on 2007-09-20 21:46
Ke 阅读(4418)
评论(0) 编辑 收藏 所属分类:
encoding