Flash與後台編碼問題解決新方案

來源:互聯網
上載者:User
編碼|後台|解決|問題

    在Flash MX的時候開始,就經常有人問為什麼Flash載入的中文會是亂碼?後來大家都用了System.useCodePage=true;去解決這個問題。可能大家都已經習慣了在Flash 5或以前,Flash完全沒有理會編碼時候吧。大家都可能覺得,我在Flash5的時候可以很容易的載入外部文本,可以很容容易地跟PHP, ASP等等的背景程式作資訊互動。但是到了Flash MX的時候,同樣的方法卻出現了亂碼。一定要在前面加上System.useCodePage=true;才可以解決問題。

    大家可能都會覺得這是Flash的問題,覺得Flash MX的中文支援能力差了。但是,事實卻剛剛相反。Flash MX, Flash 2004這些版本對編碼的支援絕對是比Flash5好的。(廢話,Flash5都沒有任何編碼的問題)大家可能對我的話有所懷疑,這不要緊,下面就讓我說明一下吧。

    大家都知道我們國家就已經有兩種不同的編碼了,分別是香港,台灣的BIG5和我們內地的GB2312。在Flash 5或以前,Flash完全沒有理會編碼問題,所有在Dynamic/Input Textfield顯示的中文字,Flash是根據瀏覽者系統預設編碼去顯示。香港一般用Big5去編碼文字,而大部分人都是用繁體中文Windows,所以一拍即合,可以顯示到中文。對於英文或簡體中文Windows瀏覽者,他們就無法顯示到Dynamic/Input Textfield上的Big5編碼繁體中文。以前的英文Windows使用者,經常要靠外掛中文程式,例如:南極星或Richwin看中文網頁,可惜這類軟體對Flash裡的中文字無法起作用,依舊是亂碼。

    但是從Flash MX開始,Flash就開始支援Unicode編碼。

Unicode

    Unicode能夠支援多國不同文字在同一套編碼架構中,所以能夠在同一篇文章中,同時顯示繁簡體中文字和其他文字。Flash 6(Flash MX)開始支援Unicode,並將Flash Player 6或以上預設編碼為Unicode(如果播放Flash 5的SWF就仍然是根據瀏覽者系統預設編碼去顯示),新手不知道這轉變,動態載入外部檔案,例如:.

loadVariablesNum("text.txt", 0);

  Text.txt這檔案裡的中文用Big5編碼,Flash Player 6則用Unicode,結果當然是顯示亂碼。

解決方案有兩個:
一 強迫Flash使用“Flash 5原來編碼方法”,在Frame 1加入指令:

System.useCodepage = true;

  如果整個SWF都是使用“Flash 5原來編碼方法”,就只需在Frame 1開始加一次便可。

二 使用unicode編碼

服務端編程:
1.PHP/ColdFusion的開發人員
請把你的PHP/ColdFusion存為UTF-8編碼。
文本:檔案->另存新檔->編碼->UTF-8
DW2K4:File->New->Preference...->Default encoding->UTF-8

然後在頂上多加

<%@ codepage=65001 %>

示範地址:al4u.51.net/test.php

2.ASP的開發人員
請把你的ASP存為UTF-8編碼。
文本:檔案->另存新檔->編碼->UTF-8
DW2K4:File->New->Preference...->Default encoding->UTF-8
然後在頂上多加

System.userCodePage=true;

  加了這指令之後,Flash對Unicode的檔案將會顯示為亂碼。也就是說,你不能用Unicode編碼了。如果不用utf-8編碼,對於gb2312編碼來說,是可以部分相容繁體中文和一些日文編碼的, 那是因為gb2312裡面已經包括了這些編碼,即所謂的gbk大字元集。這就讓很多使用System.userCodePage的人覺得只要預設編碼為gb2312,就可以做到解決編碼問題。我在原先做的時候也是這樣誤解的,那是因為我沒有測試別的語言,比如韓文。後來試了韓文之後,發現輸入到資料庫中的文字都變成了%#5234;%#1243;這樣子的亂碼。原來這些特殊語言的編碼在gb2312裡找不到,所以就被轉成了位元組編碼。

  所以,如果你只是想讓繁體和簡體之間沒有編碼問題,那隻需使用gb2312編碼就足夠了,ie會幫你轉換big5到gb2312。而如果要適應更多語言的瀏覽器,那麼,你就必須使用萬國碼unicode。不過值得注意的是, 某些資料庫不支援unicode。比如早些的mysql,現在的mysql已經支援了。這就需要強行轉換編碼,可以使用urlencode編碼,或者base64也行。讀取的時候再反編碼回unicode。還有要注意的地方, 就是flash裡面的文字框字型不能再用宋體了。而是需要用公用字型,比如Arial。 因為別的語言並沒有宋體。



相關文章

E-Commerce Solutions

Leverage the same tools powering the Alibaba Ecosystem

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。