超薄异形刀片 扳机分:常见乱码问题和解决之道 | 瑞阳日志

来源:百度文库 编辑:九乡新闻网 时间:2024/04/28 22:26:33
当你浏览一个网页,打开一个文本文件时,可能发现显示一堆乱码;当你开发调试应用程序时,一定遇到过这样的情况:前台程序出现一片乱码,或内存变量出现乱字符,导致程序无法正常处理,又或者数据库里保存了一堆火星文。如果你是一个中文软件开发人员,你也许经常接触ASCII,ISO-8859-1,GB2312,Unicode,UTF-8。如果你使用Internet Explorer浏览器,点击右键选择编码,也可以看到这些编码。实际上乱码问题的出现,都和这些常见的编码有关。一、目前常见编码系统ASCII,ISO-8859-1,GB2312,Unicode,UTF-8我们写的文字,编的源程序,计算机是无法直接识别的,需要转换成计算机可以识别语言比如二进制,才能正常存储显示。ASCII,ISO-8859-1,GB2312,Unicode,UTF-8等,就是计算机用于转换、识别这些字符的编码系统。1 ASCII码:把键盘上显示的ABCD拉丁字母,123阿拉伯数字和控制符等128个字符转换为电脑可以识别的代码,这个用于解释翻译的转换编码系统就是ASCII,美国标准信息交换标准码 (American Standard Code for Information Interchange, ASCII),也是世界上第一套电脑编码系统。当时这套编码系统的出现,解决了美国人使用计算机识别英文字符,阿拉伯字符,控制字符的问题。2 ISO-8859-1,GB2312:后来非英语国家像法国,德国,中国等也开始应用计算机,ASCII编码系统,已经无法满足计算机识别法语,德语,汉字的需求了。于是基于ASCII系统,有了ISO-8859-1(又名Latin1),GB2312(扩展集为GBK)等编码系统。这些编码标准,都以ASCII为基础包含了ASCII的编码。不过西欧的ISO-8859-1和中国的GB2312之间无法互相兼容,比如以ISO-8859-1编码方式存储到计算机的法语文件,放到只支持GB2312编码方式的中文计算机上显示,就是一堆乱码。3 Unicode,UTF-8:要让法文原样显示在GB2312的电脑上,方法有两个:第一让支持GB2312的计算机系统同时也支持ISO-8859-1编码,第二就是有套编码系统,让计算机都同时认识中文和法文字符。将中文,法文,德文,包括世界上大多数语言翻译成电脑能识别的编码系统,就是Unicode(Universal Character Set,UCS)即通用字符集。现有的编码系统包括ASCII,ISO-8859-1,GB2312,UTF-8等等,它们所包含的编码,都能从Unicode集合中找到唯一的编码对应。上面提到的UTF-8,是以8位为单元,对UCS进行编码的一种Unicode编码实现方式,兼容ISO-8859-1,由于它的变长编码方式更加节省存储空间,是目前采用最广范的世界通用字符编码。一般提到Unicode编码,多指UTF-8。以ISO-8859-1编码的法语文件,要在支持简体中文GB2312编码的Windows XP系计算机上显示,怎么显示为正常的法语字体?Windows XP自身支持Unicode码,采用代码页(code page)技术完成这个过程。首先法语文件告知XP系统自己是ISO-8859-1编码的文件,XP系统于是通过代码页技术,选择ISO-8859-1的编码方式正常显示了法文。大家可能看到了,前提这台XP系统也支持ISO-8859-1编码方式。如果不通过什么代码页技术,如何保证法语,德语,日本语,或者其它任意语言的文件,可以在另外不同语种的系统,例如中文系统的计算机上正常显示呢?你可能已经知道了,将所有的语种的文字都用UTF-8编码方式编码,解码就可以了。通过UTF-8这个”通用语言”编码,任一语言文字都能在任意语种的计算机上正常的保存,显示了。二、乱码产生的根源至此可以明白,计算机上乱码出现的根源,就在于各语种编码系统互不兼容。具体而言,常见有以下几类:1 文件处理显示乱码:操作系统不支持另外语种的编码系统,显示文件的应用程序,不知道选择正确的编码系统来解释其他语种的文件,导致文件显示乱码。2 程序处理字符乱码:前台程序提交的编码字符,后台程序没有解析为对应的编码字符,导致后台程序取到乱码字符。3 数据库存取数据乱码:客户端程序连接,更新,查询数据库过程中,编码字符集不匹配,导致保存,取得乱码数据。4 应用服务器解析乱码:例如目前多数应用服务器默认编码是ISO-8859-1,如果不修改为目标解析网页的编码方式,就会解析为乱码字符显示到网页中。三、乱码解决之道解决思路主要有UTF-8统一编码,正确匹配不同程序间的编码两种方式:1 UTF-8统一编码:目前比较理想的解决方案,是统一用UTF-8编码解码各语种字符,实际上现在很多的系统都采用了这个方案。比如你现在访问的这个网站,你可以点击右键–查看源文件(或者查看源代码),可以看到这行代码,这就表示当前网页用UTF-8方式显示。2 正确匹配程序间的编码:这个解决思路的核心,在于找到不同的程序发生交互的接口位置,确保不同编码进行了正确的解析。例如:采用具体语种编码例如ISO-8859-1编码的文件,在另外语种编码的系统显示时,要求这个文件首先说明自己采用的编码方式,同时要求目标语种编码的计算机也支持ISO-8859-1编码。在前台程序提交到后台程序接口位置,增加编码解码功能,以便正确匹配不同的编码。网页提交到后台,程序和数据库交互,程序读取写入文件,应用服务器对动态程序的解析交互,这些接口位置的编码处理或配置,都会直接影响乱码的产生。3 UTF-8统一编码实例:一个Web应用的UTF-8统一编码解决方案实例参考这篇日志 原创文章如转载,请注明:转载自瑞阳日志 本文链接地址: http://johncao.info/?p=234
本文来自: 瑞阳日志(http://johncao.info) 原文地址:http://johncao.info/?p=234