(東京電力で公開されているデータがあるので、それを取ってくる)
import flash.events.Event;
var url:String = "http://www.tepco.co.jp/forecast/html/images/juyo-j.csv";
var loader : URLLoader;
var request:URLRequest = new URLRequest(url);
getTepcoData();
function getTepcoData()
{
loader = new URLLoader();
loader.load(request);
loader.addEventListener(Event.COMPLETE, onComplete); //読み終わるのを待つ
}
function onComplete(e:Event)
{
trace(loader.data);
}
まあなんて簡単。
と思いきや、、、、、、。
いろいろ諸問題が発生。。
Flashのtrace出力をみてみると、文字化け。。。
公開データはシフトJIS、FlashではUTF-8を扱うという文字コードの違いに起因します。
ということで、UTF-8へ変換をかけてあげないと、折角データを取り込んでもFlashで表示したりできなくなる。。
文字コード変換については、ByteArrayクラスに、writeMultibyteというメソッドがあるのだが、どうも安定性がわるいらしい。自力で書くのも良いが、既にライブラリとして公開されているので、それを活用することにする。
今回用いたのは、as3jcode
このライブラリは、bytearrayのデータを指定した文字コードに変換する機能を持っている。。
http://d.hatena.ne.jp/lyokato/20100121/1264083565 ←日本語での解説
https://github.com/lyokato/as3jcode ←ソースコードはこちら
URLLoaderのloadメソッドは、TEXTモードで取るとStringで入ってしまうので、
あとで大変。(as3jcodeのIFがByteArrayなので)
loader.dataFormat = URLLoaderDataFormat.BINARY;
としてバイナリで取ってあげると、ByteArrayで取れるので便利。
これを、Jcodeで
Jcode.from_sjis(loader.data)
と、変換してあげると、無事に日本語表示されましたん。
今回はこんな感じになりました。
import flash.events.Event;
var url:String = "http://www.tepco.co.jp/forecast/html/images/juyo-j.csv";
var loader : URLLoader;
var request:URLRequest = new URLRequest(url);
getTepcoData();
function getTepcoData()
{
loader = new URLLoader();
loader.dataFormat = URLLoaderDataFormat.BINARY;
loader.load(request);
loader.addEventListener(Event.COMPLETE, onComplete);
}
function onComplete(e:Event)
{
trace(Jcode.from_sjis(loader.data));
}
折角なので、これを基にもう少し拡張して行きたいと思います。。
0 件のコメント:
コメントを投稿