进行XSLT转换时,在IE9和IE11中无法正确转换非中断空格(“ ”)

我们正在对使用ISO-8859-1编码的文档进行客户端XSL转换.在IE7和IE8中正常工作.但是,当我们在IE9中运行时,IE11的实际转换效果很好,但转换中不再保留不间断的空格(“ ”).

它取代了不间断的空间,而是放入“替换字符”(在黑暗钻石中呈现为问号).

如果我们转向兼容模式,则不间断空间将作为转换的一部分正确呈现.
这似乎是IE9中XSL处理器中的一个错误 – 应该正确转换非中断空格.

如果有一些解决这个问题的方法?

下面显示的图像是IE9和IE11的替换字符图像.

《进行XSLT转换时,在IE9和IE11中无法正确转换非中断空格(“ ”)》

Warning/error messages from IE11 console –

    HTML1300: Navigation occurred.
    File: Test
    XML5001: Applying Integrated XSLT Handling.
    HTML1524: Invalid HTML5 DOCTYPE. Consider using the interoperable form "<!DOCTYPE html>".
    File: Test, Line: 3, Column: 1
    HTML1114: Codepage utf-8 from (10) overrides conflicting codepage iso-8859-1 from (META tag)
    File: Test
    HTML1504: Unexpected end tag.
    File: Test, Line: 380, Column: 1
    HTML1504: Unexpected end tag.
    File: Test, Line: 381, Column: 1
    HTML1504: Unexpected end tag.
    File: Test, Line: 476, Column: 1
    SEC7115: :visited and :link styles can only differ by color. Some styles were not applied to :visited.
    File: Test

HTML1114: Codepage utf-8 from (10) overrides conflicting codepage iso-8859-1 from (META tag)

不确定为什么IE11会覆盖服务器给出的编码.

最佳答案 这是一个编码问题.似乎IE10 / 11在ISO-8859-1编码后,尝试在UTF16中重新编码.

我认为你最有可能解决的问题是包括一个< meta charset =“ISO-8859-1”>在你的< head>中HTML中的标记.我相信所有版本的MSIE都会尊重这一点(或者如果忽略它,至少默认为它).我之前在不同的浏览器相关上下文中遇到过类似的问题并解决了它.

点赞