[Air/Flex]UTF-8以外のエンコーディングを扱う

 6月6日はドラえもんの日だと個人的に思っています。

 AirやFlexで扱うことができるエンコーディングは、デフォルトではUTF-8ですが、サーバ側のシステムの都合などで、UTF-8以外のエンコーディングを扱う必要が出てくる場合があります。
 サーバ側から返されるデータのエンコーディングがShift-JISで固定であれば、サーバからデータを取得する前に、以下の一行を追加するだけで、Shift-JISのデータを文字化けすることなく扱うことができます。

System.useCodePage = true;

 これはFlashでは常識らしいのですが、これを知らなかったばかりに、ゴールデンウィークの貴重な二日間を無駄に費やしたバカが誰なのかについては、本人の名誉のためにここでは伏せることにして、それではUTF-8でもShift-JISでもないエンコーディングを扱う場合はどうすればいいのかというと...
(だいぶ端折ってますので各自で適宜補足してください)

var req:URLRequest = new URLRequest("http://www.hoge.com/foo.xml");
var loader:URLLoader = new URLLoader();
loader.dataFormat = URLLoaderDataFormat.BINARY;
loader.addEventListener(Event.COMPLETE,function(event:Event):void{
  var loader:URLLoader = event.target as URLLoader;
  var byteArray:ByteArray = loader.data;
  var data:String = byteArray.readMultiByte(byteArray.length,"shift_jis");
});
loader.load(req);

 まずURLLoaderクラスのdataFormatプロパティにURLLoaderDataFormat.BINARYをセットして、サーバからのレスポンスをバイナリデータとして受け取るように設定します。次に、受信したデータをByteArrayとして受け取り、readMultiByteメソッドの第二引数でエンコーディングを指定してUTF-8の文字列に変換します。
 Flex3でreadMultiByteの第二引数として指定可能なエンコーディングの一覧は、こちらのページで参照できます。

トラックバック(0)

このブログ記事を参照しているブログ一覧: [Air/Flex]UTF-8以外のエンコーディングを扱う

このブログ記事に対するトラックバックURL: http://ushi.donburi.net/mt/mt-tb.cgi/17

コメントする

このブログ記事について

このページは、くわが2008年6月 6日 15:49に書いたブログ記事です。

ひとつ前のブログ記事は「[Air/Flex]数値文字参照の変換」です。

次のブログ記事は「[Silverlight]Silverlight2β2」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

Powered by Movable Type 6.0.3
ぎゅう♪ぎゅう♪ぎゅう♪ぎゅう♪ ぎゅう♪ぎゅう♪ ぎゅう♪ぎゅう♪