扱っているいくつかの URL で非 ASCII 文字を URL エスケープ (パーセント エンコード) しようとしています。これらの URL から画像やサウンド クリップなどのリソースを読み込むフラッシュ アプリケーションを使用しています。ファイル名には次のように非ASCII文字を含めることができるため、文字
日本語.jpg
をutf-8でエンコードしてから、Unicodeバイトをパーセントエスケープして、次のようにエスケープします。
%E6%97%A5%E6%9C%AC%E8%AA%9E.jpg
これらのファイル名は、Internet Explorer 以外のブラウザーでアプリを実行すると正常に機能します。Firefox、Safari、および Chrome を試しました。しかし、IE でアプリを起動し (6 と 8 の両方を試しました)、サウンド クリップをロードしようとすると、次
Error #2044: Unhandled ioError
のようになり、URL が次のように壊れています。
æ¥æ¬èª.jpg
これを修正する方法について何か考えはありますか?これは、ローカル ファイル システムの URL を使用して Flash アプリをテストするだけです。file:///C:/%E6%97%A5%E6%9C%AC%E8%AA%9E.jpg
また、Internet Explorer が次のようなファイルを見つけることができないことにも気付きました:
C:\日本語.jpg
編集
私の問題は、次の ActionScript コード フラグメントで発生した問題と同じだと思います。
import flash.display.Loader;
import flash.net.URLRequest;
...
var ldr:Loader;
var req:URLRequest = new URLRequest("日本語.jpg");
ldr = new Loader();
ldr.load(req);
文字列の使用は日本語.jpg
IE で機能しますが、文字列の使用%E6%97%A5%E6%9C%AC%E8%AA%9E.jpg
は他のブラウザーで機能します。私が必要としているのは、すべてのブラウザーで機能する単一のフォームです。エンコーディングを試み、%u
http リクエスト ヘッダーを に設定しContent-Type: text/html; charset=utf-8
ましたが、パーセント エスケープまたはエスケープされていない形式のどちらでもうまくいきませんでした。