airのHTMLコンポーネント(mx.controls.HTML)で、ローカルにあるHTMLファイルを読みたい。
この場合、には、
var file:File = File.desktopDirectory.resolvePath("index.html");
var browser:HTML = new HTML();
browser.location = "file:///" + escapeMultiByte(file.nativePath);
のように、頭にfile:/// をつけるのと、パスに日本語が含まれることを考え、escapeMultibyte()関数を使ってあげればよい。
ただ、これを使うと、そこまでエンコードしなくてもというところまでエンコード(エスケープ)されるが、見えるので問題はない。
それと、ローカルにあるファイルゆえに発生する問題がある。
文字コードがHTTPのヘッダで指定できるわけではないので、HTMLファイル自体にキチンと文字コードをmetaタグに書いてあれば問題ないが、
記述がない場合にはたいていの場合には文字化けを起こすだろう。
この場合には、ブラウザ側で文字コードを指定しなければならないが、残念ながらHTMLのクラスを見ていても直接の設定はない。
この場合には、内部のプロパティである、htmlLoaderオブジェクトを通して設定する必要がある。
browser.htmlLoader.textEncodingOverride = "Shift_JIS";
とこんな感じだ。

