Actionscript3 AIR

文字コード検知クラス 作ってみました。

[`evernote` not found]
LINEで送る
Pocket

Actionscript 3.0 の文字コード検知クラスを作成してみました。

ファイルはここにおいています。
http://www.hi-farm.net/aslib/detect.lzh

このクラスが何をするための物かと言えば、
文字コードを検知するものです。

ファイルをswfに取り込む時に、文字コードをutf-8に変換するものは、URLStreamのreadMultiByteメソッドがあるのですが、例えば、読み込むファイルの文字コードがランダムで指定できない場合、文字コードを検知するのが面倒でした。

そんな面倒なことはやりたくない!ということで、読み込もうとする文字コードの種類を検知するクラスを作成してみました。

簡単に言えば、
URLStreamを使ってファイルを読み込む場合:DetectOnWebクラス
FileStreamを使う場合:DetectOnAirクラス
を使って下さい。

言い直すと、
web上にあるファイルを調べる場合:DetectOnWebクラス
AIRを使ってローカルファイルを調べる場合:DetectOnAirクラス

ということです。

使い方は、
1 インポートする
2 インスタンス作成する
3 リスナー設定する
4 detectCharset(読み込むファイルのURL:String);
5 リスナーで答えを取得

という流れです。

例としてはこんな感じです。

DetectOnAirクラス:

<?xml version=”1.0″ encoding=”utf-8″?>
<mx:WindowedApplication xmlns:mx=”http://www.adobe.com/2006/mxml”; layout=”absolute” creationComplete=”initApp()”>
<mx:Script>
<![CDATA[

import net.hifarm.encode.DetectOnAir;

private var detect:DetectOnAir;

private function initApp():void{
detect = new DetectOnAir();
detect.addEventListener(“completeData”, comp);
//下のはローカルファイルのURL表現の例です。 detect.detectCharset(“file:///Users/mmlemon/Documents/Flex%20Builder%20Moxie/indexInPDF/shift-jis.txt”;);
}
private function comp(e:Event):void{
trace(detect.result);
}
]]>
</mx:Script>
</mx:WindowedApplication>

DetectOnWebクラス:
<?xml version=”1.0″ encoding=”utf-8″?>
<mx:Application xmlns:mx=”http://www.adobe.com/2006/mxml”; layout=”absolute” creationComplete=”initApp()”>
<mx:Script>
<![CDATA[

import net.hifarm.encode.DetectOnWeb;

private var detect:DetectOnWeb;

private function initApp():void{
detect = new DetectOnWeb();
detect.addEventListener(“completeData”, comp);
detect.detectCharset(“http://blog.hi-farm.net/”;);
}
private function comp(e:Event):void{
trace(detect.result);
}
]]>
</mx:Script>
</mx:Application>

すると、いずれも『detect.result』というところに結果が反映されます。具体的には、
“iso-2022-jp” , “euc-jp” , “utf-8” , “shift-jis” , “iso-8859-2”

です。ちなみに、エラーが発生した場合、エラーメッセージがdetect.resultに返されます。
iso-8859-2は、iso-2022-jp、euc-jp、utf-8、shift-jisに当てはまらない結果が出た場合に示されます。

注意点:
現在は日本語しか判別できません。
韓国語や中国語の判定はできないのであしからず。

まだ作ったばかりで間もないため、不具合やエラーがあるかもしれません。
その場合、メールいただけると幸いです。

2007年9月26日01:08

Leave a Reply

Your email address will not be published.

CAPTCHA