徹底消滅Flash動畫中的亂碼
2020-07-17 13:18:22
供稿:網友
鑒于很多人用 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編碼統一,從而徹底的消滅亂碼。