FlashPlayerの文字コードとか文字コード変換とか

| コメント(0) | トラックバック(0)
FlashPlayerはVersion6以降はUTF-8。
故にShift-JISでエンコードされた外部テキストとか読み込んで
表示しようとすると文字化けしたりする。

System.useCodepage = true;
とかすると文字化けしなくなるのは以下のAdobeのTechNoteにあるように

System.useCodepage という値を「true」にした場合、Flash Player 6 以降で扱うエンコーディング (UTF-8) はシステムに依存した形に切り替わり、日本語の Windows や Macintosh では、「Shift-JIS」となります。 ~ Adobe:TechNote
なにをいまさら的な話だけどSystem.useCodepage = trueをググったりしてShiftJISに文字コードコンバートできるのでは?的質問を時々受けるのが少々疲れるw
つまりはFlashPlayerはあくまでもUTF-8でこのSystem.useCodepage = true をやることでそのOSの環境の方のエンコーディングになるわけです。(仮にOSがEUCだったらEUCが文字化けしない)

ちなみにバイナリデータが扱えるようになったFlashPlayer9以降では
こんな感じでByteArrayを使って文字コードの変換ができました。

var bT:ByteArray = new ByteArray();
bT.writeMultiByte( str, "shift-jis" );
bT.position = 0;
var s_sJis:String  = bT.readMultiByte(bT.length, "shift-jis" );
ちなみにByteArray.positionを0に戻すってのに最初気づかなかったです。
補足

UTF-8 → Shift-JISで文字化けする場合

["?"に文字化け]
UTF8にあってShift-JISにない文字なので"?"(16進数で3F)に変換されてしまう

["・"に文字化け]
Shift-JISに存在する文字だが機種依存文字。16進数では違いも確認できる。
例)WindowsにあってMacにない文字(マル1)など




トラックバック(0)

トラックバックURL: http://www.infective.jp/mt5/mt-tb.cgi/37

コメントする