我正在尝试在我正在处理的几个 URL 中对非 ascii 字符进行 URL 转义(百分比编码)。我正在使用从这些 URL 加载图像和声音剪辑等资源的 Flash 应用程序。由于文件名可以包含非 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 应用程序。我还注意到 Internet Explorer 无法找到诸如: 之类的文件
file:///C:/%E6%97%A5%E6%9C%AC%E8%AA%9E.jpg
,尽管 Chrome / Firefox 会对其进行解码并为具有路径的文件加载就好了
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
为百分比转义或非转义形式都没有运气。