1

我在 IE8 和 IE7 中使用非英文字符(我们尝试了希伯来语和中文)运行以下 html 片段,而第二个链接永远无法正常工作。
警告框中显示的文本被破坏。这发生在 IE8 和 IE7 中,但不在 Firefox 中。它不依赖于 Windows 的区域设置。

这是 html 片段(为简洁起见,省略了 html 页眉和页脚,内容类型为“text/html; charset=utf-8”,响应标头也是如此):

<p>
  <a href="javascript:alert('abשלוםab')">link with English and Hebrew text</a>
  <a href="javascript:alert('ab%D7%A9%D7%9C%D7%95%D7%9Dab')">same text, url encoded</a>
</p>

这是单击第二个链接时弹出的警告框:

替代文字

我知道 "שלום" 的字符串在 utf-8 中被编码为 8 个字节,因此有 8 个 %NN 项,并且警告框中还有 8 个奇怪的字符。问题是,我怎样才能让 IE 识别这是 utf-8 编码文本,就像 firefox 一样?

更新:

完整的 html(最小示例)可在此处获得。
我尝试了decodeURIdecodeURIComponentunescape,但没有成功。将链接从 移动hrefonclick解决问题。我的问题是某些内容是从我无法控制的其他来源生成的,我最终在 href 属性中使用了 javascript 链接。

4

1 回答 1

4

由于 URI 转义对您来说不能可靠地工作,我想知道您是否可以更好地使用 JavaScript Unicode 转义?例如(在 JavaScript 字符串中),要显示的 Unicode 代码点\u1234在哪里。1234这也具有在javascript:URI 之外工作的优势,以防您将代码移动到 JavaScript 文件或其他东西。

因此,根据您对代码点的回复,看起来像这样:

<a href="javascript:alert('ab\u05E9\u05DC\u05D5\u05DDab')">same text, using JavaScript escapes</a>

...在我的测试中看起来像这样:

IE7:IE7结果图片 http://www.imagechicken.com/uploads/1269198244050004700.png

IE8:IE8 结果图像 http://www.imagechicken.com/uploads/1269198387032872100.png(通过 RD,因此是基本外观)

Chrome:Chrome 结果图片 http://www.imagechicken.com/uploads/1269198434021743700.png

火狐:火狐结果图片 http://www.imagechicken.com/uploads/1269198440077244000.png

(出于某种原因,关于最后一个代码点似乎存在一些分歧。)

于 2010-03-21T15:08:01.227 回答