彻底消灭Flash动画中的乱码
程序员文章站
2023-11-03 20:47:10
鉴于很多人用 System.useCodepage = true 这个属于下策的方法来解决乱码,而且还不知道为什么,所以打算让不知道的朋友了解如何彻底消灭乱码。
关于编码的基础知识:
每个国... 08-10-06...
鉴于很多人用 system.usecodepage = true 这个属于下策的方法来解决乱码,而且还不知道为什么,所以打算让不知道的朋友了解如何彻底消灭乱码。
关于编码的基础知识:
每个国家/区域都规定了计算机信息交换用的字符编码集,比如美国的扩展ascii码,中国的gb2112-80,日本的jis等,做为该国家/区域内信息处理的基础,有着统一编码的重要作用。早期的软件为了解决本地字符信息的计算机处理,出现了各种本地化版本(l10n),为了区分,引进了lang(语言),codepage(编码)概念。但由于各个本地字符集代码范围重叠,相互间信息交换困难,软件各个本地化版本独立维护成本较高,因此有比较将本地化工作中的共性抽取出来,作一致处理,各种语言信息被进一步规范为locale信息。处理底层字符集变成了几乎包含了所有字形的unicode。
一、什么是unicode
unicode给每个字符提供了一个唯一的数字,不论什么平台,不论什么程序,不论什么语言,unicode标准已经被这些工业界的领导们所采用。例如:apple、hp、ibm、justsystem、microsoft、oracle、sap、sun、sybase、unisys和其它许多公司。最新的标准都需要unicode。例如:xml、java、ecmascript(javascript)、ldap、corba3.0、wml等等,并且,unicode是实现iso/iec 10646的正规方式。许多操作系统,所有最新的浏览器和许多其它产品都支持它。unicode标准的出现和支持它工具的存在,是近来全球软件技术最重要的发展趋势。
二、unicode的优点
基本上,计算机知识处理数字,它们指定一个数字来存储字母或其它字符。在创造unicode之前,有数百种指定这些数字的编码系统。没有一个编码可以包含足够的字符,这些编码系统也会相互冲突。也就是说,不同的编码可能使用相同的数字代表两个不同的字符,或使用不同的数字代表相同的字符。比如:简体中文(gb),繁体中文(big50)中“赵”都是一个字,但是编码不同。在不同的编码下,big5码的“赵”对应的数字是0xbbaf,而数字0xbbaf在gb码中对应的却是“化”,这就是乱码.而unicode采用统一的编码,“赵”就只有一个,不管它在哪种文字编码下。
三、彻底解决乱码
flash 5及其之前版本的编码标准是以系统编码为标准的。但flash mx以后开始支持unicode,并将flash player 6或以上版本预设编码为unicode,如果flash载入非unicode编码时,(比如一个ansi方式保存的文件)就会出现乱码。
解决方法有两种:
第一种是下策,即强迫flash使用flash 5的编码方法,在第一帧加入:system.usecodepage = true;这种方法虽然暂时解决了中文系统的乱码问题,但对程序的兼容性和扩展性极为不利。比如:你用的是gb(简体中文)编码的系统,当一个不是用gb编码的系统观看你的flash时,他看到的依然是乱码。
第二种是上策,即利用unicode编码的一个最常用的实现方法“utf-8”(unicode transformation format - 8 bit)来实现。最简单的办法就是在保存文件时用编辑软件(比如:windows记事本)保存时在“编码”选项处选择“utf-8”编码形式,形成文本编码和flash编码统一,从而彻底的消灭乱码。
关于编码的基础知识:
每个国家/区域都规定了计算机信息交换用的字符编码集,比如美国的扩展ascii码,中国的gb2112-80,日本的jis等,做为该国家/区域内信息处理的基础,有着统一编码的重要作用。早期的软件为了解决本地字符信息的计算机处理,出现了各种本地化版本(l10n),为了区分,引进了lang(语言),codepage(编码)概念。但由于各个本地字符集代码范围重叠,相互间信息交换困难,软件各个本地化版本独立维护成本较高,因此有比较将本地化工作中的共性抽取出来,作一致处理,各种语言信息被进一步规范为locale信息。处理底层字符集变成了几乎包含了所有字形的unicode。
一、什么是unicode
unicode给每个字符提供了一个唯一的数字,不论什么平台,不论什么程序,不论什么语言,unicode标准已经被这些工业界的领导们所采用。例如:apple、hp、ibm、justsystem、microsoft、oracle、sap、sun、sybase、unisys和其它许多公司。最新的标准都需要unicode。例如:xml、java、ecmascript(javascript)、ldap、corba3.0、wml等等,并且,unicode是实现iso/iec 10646的正规方式。许多操作系统,所有最新的浏览器和许多其它产品都支持它。unicode标准的出现和支持它工具的存在,是近来全球软件技术最重要的发展趋势。
二、unicode的优点
基本上,计算机知识处理数字,它们指定一个数字来存储字母或其它字符。在创造unicode之前,有数百种指定这些数字的编码系统。没有一个编码可以包含足够的字符,这些编码系统也会相互冲突。也就是说,不同的编码可能使用相同的数字代表两个不同的字符,或使用不同的数字代表相同的字符。比如:简体中文(gb),繁体中文(big50)中“赵”都是一个字,但是编码不同。在不同的编码下,big5码的“赵”对应的数字是0xbbaf,而数字0xbbaf在gb码中对应的却是“化”,这就是乱码.而unicode采用统一的编码,“赵”就只有一个,不管它在哪种文字编码下。
三、彻底解决乱码
flash 5及其之前版本的编码标准是以系统编码为标准的。但flash mx以后开始支持unicode,并将flash player 6或以上版本预设编码为unicode,如果flash载入非unicode编码时,(比如一个ansi方式保存的文件)就会出现乱码。
解决方法有两种:
第一种是下策,即强迫flash使用flash 5的编码方法,在第一帧加入:system.usecodepage = true;这种方法虽然暂时解决了中文系统的乱码问题,但对程序的兼容性和扩展性极为不利。比如:你用的是gb(简体中文)编码的系统,当一个不是用gb编码的系统观看你的flash时,他看到的依然是乱码。
第二种是上策,即利用unicode编码的一个最常用的实现方法“utf-8”(unicode transformation format - 8 bit)来实现。最简单的办法就是在保存文件时用编辑软件(比如:windows记事本)保存时在“编码”选项处选择“utf-8”编码形式,形成文本编码和flash编码统一,从而彻底的消灭乱码。