徹底消滅Flash動(dòng)畫中的亂碼
2020-07-17 13:18:22
供稿:網(wǎng)友
鑒于很多人用 System.useCodepage = true 這個(gè)屬于下策的方法來解決亂碼,而且還不知道為什么,所以打算讓不知道的朋友了解如何徹底消滅亂碼。
關(guān)于編碼的基礎(chǔ)知識(shí):
每個(gè)國家/區(qū)域都規(guī)定了計(jì)算機(jī)信息交換用的字符編碼集,比如美國的擴(kuò)展ASCII碼,中國的GB2112-80,日本的JIS等,做為該國家/區(qū)域內(nèi)信息處理的基礎(chǔ),有著統(tǒng)一編碼的重要作用。早期的軟件為了解決本地字符信息的計(jì)算機(jī)處理,出現(xiàn)了各種本地化版本(L10N),為了區(qū)分,引進(jìn)了LANG(語言),Codepage(編碼)概念。但由于各個(gè)本地字符集代碼范圍重疊,相互間信息交換困難,軟件各個(gè)本地化版本獨(dú)立維護(hù)成本較高,因此有比較將本地化工作中的共性抽取出來,作一致處理,各種語言信息被進(jìn)一步規(guī)范為Locale信息。處理底層字符集變成了幾乎包含了所有字形的Unicode。
一、什么是Unicode
Unicode給每個(gè)字符提供了一個(gè)唯一的數(shù)字,不論什么平臺(tái),不論什么程序,不論什么語言,Unicode標(biāo)準(zhǔn)已經(jīng)被這些工業(yè)界的領(lǐng)導(dǎo)們所采用。例如:Apple、HP、IBM、JustSystem、Microsoft、Oracle、SAP、Sun、Sybase、Unisys和其它許多公司。最新的標(biāo)準(zhǔn)都需要Unicode。例如:XML、Java、ECMAScript(Javascript)、LDAP、CORBA3.0、WML等等,并且,Unicode是實(shí)現(xiàn)ISO/IEC 10646的正規(guī)方式。許多操作系統(tǒng),所有最新的瀏覽器和許多其它產(chǎn)品都支持它。Unicode標(biāo)準(zhǔn)的出現(xiàn)和支持它工具的存在,是近來全球軟件技術(shù)最重要的發(fā)展趨勢。
二、Unicode的優(yōu)點(diǎn)
基本上,計(jì)算機(jī)知識(shí)處理數(shù)字,它們指定一個(gè)數(shù)字來存儲(chǔ)字母或其它字符。在創(chuàng)造Unicode之前,有數(shù)百種指定這些數(shù)字的編碼系統(tǒng)。沒有一個(gè)編碼可以包含足夠的字符,這些編碼系統(tǒng)也會(huì)相互沖突。也就是說,不同的編碼可能使用相同的數(shù)字代表兩個(gè)不同的字符,或使用不同的數(shù)字代表相同的字符。比如:簡體中文(GB),繁體中文(BIG50)中“趙”都是一個(gè)字,但是編碼不同。在不同的編碼下,BIG5碼的“趙”對(duì)應(yīng)的數(shù)字是0xBBAF,而數(shù)字0xBBAF在GB碼中對(duì)應(yīng)的卻是“化”,這就是亂碼.而Unicode采用統(tǒng)一的編碼,“趙”就只有一個(gè),不管它在哪種文字編碼下。
三、徹底解決亂碼
Flash 5及其之前版本的編碼標(biāo)準(zhǔn)是以系統(tǒng)編碼為標(biāo)準(zhǔn)的。但Flash MX以后開始支持Unicode,并將Flash Player 6或以上版本預(yù)設(shè)編碼為Unicode,如果Flash載入非Unicode編碼時(shí),(比如一個(gè)ANSI方式保存的文件)就會(huì)出現(xiàn)亂碼。
解決方法有兩種:
第一種是下策,即強(qiáng)迫Flash使用Flash 5的編碼方法,在第一幀加入:System.useCodepage = true;這種方法雖然暫時(shí)解決了中文系統(tǒng)的亂碼問題,但對(duì)程序的兼容性和擴(kuò)展性極為不利。比如:你用的是GB(簡體中文)編碼的系統(tǒng),當(dāng)一個(gè)不是用GB編碼的系統(tǒng)觀看你的Flash時(shí),他看到的依然是亂碼。
第二種是上策,即利用Unicode編碼的一個(gè)最常用的實(shí)現(xiàn)方法“UTF-8”(Unicode Transformation Format - 8 bit)來實(shí)現(xiàn)。最簡單的辦法就是在保存文件時(shí)用編輯軟件(比如:Windows記事本)保存時(shí)在“編碼”選項(xiàng)處選擇“UTF-8”編碼形式,形成文本編碼和Flash編碼統(tǒng)一,從而徹底的消滅亂碼。