internet-explorer - Internet Explorer 的 URL 转义中文/日文 Unicode 字符

标签 internet-explorer url unicode escaping encode

我正在尝试对我正在处理的几个 URL 中的非 ASCII 字符进行 URL 转义(百分比编码)。我正在使用一个 Flash 应用程序,该应用程序从这些 URL 加载图像和声音剪辑等资源。由于文件名可以包含非 ASCII 字符,如下所示: 日本​​语.jpg 我通过 utf-8 编码字符来转义它们,然后对 unicode 字节进行百分比转义,以获得以下结果:

%E6%97%A5%E6%9C%AC%E8%AA%9E.jpg

当我在 Internet Explorer 以外的任何浏览器中运行应用程序时,这些文件名都可以正常工作 - 我已经尝试过 Firefox、Safari 和 Chrome。但是当我在 IE 中启动应用程序(尝试了 6 和 8)并尝试加载声音剪辑时,我得到: 错误 #2044:未处理的 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请求 header 设置为 Content-Type: text/html; charset=utf-8 无论是百分比转义还是非转义形式都没有运气。

最佳答案

抱歉,没有解决方案,但也许至少可以提供一些有关此处可能发生的情况的更多信息。 (可能您已经弄清楚了这么多,但也许它会帮助其他读者找到解决方案。)“官方”url 编码规范似乎为如何解码转义的 url(如您生成的 URL)敞开了大门-- 转义实体是用来表示 UTF-8 字符(如 Firefox 等解释它们)还是 ASCII 字符(如 IE 解释它们)?我不知道有什么方法可以强制执行预期的解码策略。

只是一个问题:如果你根本不转义它们,而是将 unicode 留在 url 中,会发生什么糟糕的事情?虽然我对此没有太多经验,但我想我记得在某处读过,需要在 url 中转义 unicode 的日子已经过去了。这可能是错误的...

关于internet-explorer - Internet Explorer 的 URL 转义中文/日文 Unicode 字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1794637/

相关文章:

php - Codeigniter 如何从 url_title() 中获取原始字符串?

c++ - 解码电子邮件的有趣 ISO 编码

c++ - 是否可以将 libxml 与 unicode xmlchar 一起使用?

javascript - window.devicePixelRatio 在 IE 10 Mobile 中不起作用?

css - IE9 CSS Hack - 哪些属性不起作用?

css - slider 在 IE 中显示不正确?

python - pytest 无法在 Python 2.7 下处理 README 中 doctest 中的 Unicode

php - 如何使用 php 将 VML 转换为 png

javascript - 发布到相对 url

javascript - 如何使用纯 JavaScript 获取 div 内图像集的 src 值?