AS3のShift_JISのXML読み込み問題

Filed under AS3, Flash
Tagged as , , ,

「AS3のShift_JISのXML読み込みにバグ」という問題でかなりハマったので、メモのためのエントリです。

Shift_JISのXML読み込みで問題発生

『AS3でShift_JISのXMLを読み込む』という話があった時点で、「え!?Shift_JIS?なんか怖いので、UTF-8にしてください」と野生の勘で言ったものの、根拠がなくて却下されていました。

で、開発終盤。
なぜだかうまく読み込めない、という問題が大きな問題となりつつあり、当初は通信ラグとかサーバ側がおかしいんじゃないのか?とかそういう感じで調査していたのですが、調べていくと、「AS3でShift_JISの大きなサイズのXMLを読み込むとうまく読み込めないことが発生する」というバグ情報にたどり着きました。

野生の勘は的中でした。
21世紀も1割過ぎたんだから、もう新規案件の通信時文字コードはUTF-8で統一しようよ、と心の底から思います。

Shift_JISのXMLを問題なく読み込む方法

さらに調べると、どうやら回避策があるということがわかり、具体的には下記のブログエントリを参考に回避することが出きました。

内容を説明すると、バイナリフォーマットで通信し、それをByteArray→UTF-8の解釈でStringに変換→XMLという流れで解釈してあげれば問題ない模様。

// ロード開始コード.
var _loader:URLLoader = new URLLoader();
_loader.dataForamt = URLLoaderDataFormat.BINARY; // ←ここが重要.
_loader.addEventListener( Event.COMPLETE, onLoadComplete );
_loader.load(new URLRequest( _path_to_load_ ));
// ロード完了後の処理.
var bytes:ByteArray = ByteArray( _loader.data ); // 型キャスト.
var xml:XML = new XML( byteData.readMultiByte( bytes.length, "shift-jis" ) );

この流れでうまく行くというのは、おそらく、自動でXMLに変換するときに文字コード判定がバグってしまう、ということなんだと思います。


[AD]

↓ヘッドフォン入出力の分岐用に欲しい。というか、ミキシングできるらしく試してみたい。

【国内正規代理店品】belkin ベルキン マルチ イヤフォン スプリッター ROCKSTAR F8Z274

【国内正規代理店品】belkin ベルキン マルチ イヤフォン スプリッター ROCKSTAR F8Z274

中古価格: ¥ 4,000 より

Amazon価格:¥ 11,981

カテゴリ:エレクトロニクス

発売日:2008-11-10


↓フタ付き小物入れ部分が魅力的だったりするUSBハブ。箱の中にも端子があったら最高だった。

huBox HB-029

huBox HB-029

カテゴリ:Personal Computers

発売日:2010-03-01


One Comment

  1. […] AS3の Shift_JISのXML読み込み問題 [AD] […]

Post a Comment

Your email is never published nor shared. Required fields are marked *

*
*

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)