同事問了在AS3中對文文字編碼轉換的問題
起因是於目前一個合作的專案上
使用資料庫編碼為Big5
flash預設文字編碼為unicode
所以呈現上都會產生亂碼

以前都是使用System.useCodepage = true 這個語法
現在AS3中多了一些方式可達成轉換
readMultiByte(length:uint, charSet:String):String
writeMultiByte(value:String, charSet:String):void

看了下文件
並上網查詢一下資料後
很是方便啊,且處理起來速度較快
這樣一來之後可用方式就多了.
將方式在這邊做個筆記 ( for Flex)
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="_initData()">
    <mx:Script>
        <![CDATA[
            import flash.events.*;
            import flash.net.URLLoader;
            import flash.net.URLRequest;
            import flash.net.URLLoaderDataFormat;
           
            private var _loader:URLLoader;
            private var _request:URLRequest;
            private var _url:String;
           
            private function _initData():void
            {
                _url = "big5.txt";
                _request = new URLRequest(_url);
                _loader = new URLLoader();
                _loader.dataFormat = URLLoaderDataFormat.BINARY;
                _loader.addEventListener(Event.COMPLETE, _completeHandler);
                _loader.load(_request);
            }
           
            private function _completeHandler(event:Event):void
            {
                var loader:URLLoader = URLLoader(event.target);
                //
                var utf8BA:ByteArray = ByteArray(loader.data);
                var utf8Str:String = utf8BA.readMultiByte(utf8BA.length, "big5");
                //
                var big5BA:ByteArray = new ByteArray();
                big5BA.writeMultiByte(utf8Str, "big5");
                //
                big5Str_txt.text = loader.data;
                utf8_big5Str_txt.text = big5BA.toString();
                utf8Str_txt.text = utf8Str;
            }
           
        ]]>
    </mx:Script>
   
    <mx:VBox horizontalCenter="0" top="120" horizontalAlign="center" id="vbox1">
        <mx:HBox id="hbox1">
            <mx:Panel width="250" height="200" layout="absolute" id="panel1" title="未調整編碼:Big5" fontSize="12">
                <mx:Text x="10" y="10" width="210" height="140" id="big5Str_txt"/>
            </mx:Panel>
            <mx:Panel width="250" height="200" layout="absolute" id="panel2" title="調整編碼:UTF-8,再轉為Big5" fontSize="12">
                <mx:Text x="10" y="10" width="210" height="140" id="utf8_big5Str_txt"/>
            </mx:Panel>
            <mx:Panel width="250" height="200" layout="absolute" id="panel3" title="調整編碼:UTF-8" fontSize="12">
                <mx:Text x="10" y="10" width="210" height="140" id="utf8Str_txt"/>
            </mx:Panel>
        </mx:HBox>
    </mx:VBox>
   
</mx:Application>
arrow
arrow
    全站熱搜

    gstar175 發表在 痞客邦 留言(0) 人氣()