ActionScript内のStringは全部utf-8で管理されていて、ネットワークからデータを取得した時に
それがeuc-jpだと、文字化けてしまう。
サーバーサイドが自分で変更できるなら、他の文字コードに変換してから送ればいいけど、
自分ではどうしようもなければ、クライアント側で変換しなければならない
それをLibraryとか使わずに、sdkの機能だけで頑張ってみた。
ポイントは、2つ
・受け取ったデータをバイナリで取得する。
・CompleteイベントでそれをStringに変換
これでいけるはず。
もしダメだったら、
とかも試してください
追記
System.useCodePage = true;は、外部からテキストを取得し、Stringオブジェクトに変換する際に、OSのデフォルトの文字コードを用いてutf-8にエンコードするというもの。
なので、URLLoaderでバイナリとしてデータを取得し(Stringオブジェクトに変換しない)、readMultiByteで任意の文字コードを指定してStringオブジェクトに変換ってやった方が、あとでバグが起きにくいかも。
あと、URLStreamクラスのreadMultiByteを使うっていう手もある。
readMultiByteでeucからではなくshift-jisから変換する場合は、第2引数に"shift-jis"と入れればおk
それがeuc-jpだと、文字化けてしまう。
サーバーサイドが自分で変更できるなら、他の文字コードに変換してから送ればいいけど、
自分ではどうしようもなければ、クライアント側で変換しなければならない
それをLibraryとか使わずに、sdkの機能だけで頑張ってみた。
ポイントは、2つ
・受け取ったデータをバイナリで取得する。
・CompleteイベントでそれをStringに変換
これでいけるはず。
もしダメだったら、
とかも試してください
追記
System.useCodePage = true;は、外部からテキストを取得し、Stringオブジェクトに変換する際に、OSのデフォルトの文字コードを用いてutf-8にエンコードするというもの。
なので、URLLoaderでバイナリとしてデータを取得し(Stringオブジェクトに変換しない)、readMultiByteで任意の文字コードを指定してStringオブジェクトに変換ってやった方が、あとでバグが起きにくいかも。
あと、URLStreamクラスのreadMultiByteを使うっていう手もある。
readMultiByteでeucからではなくshift-jisから変換する場合は、第2引数に"shift-jis"と入れればおk

コメントする