encoding - 使用 MSXML 的 XSLT 转换未使用正确的编码

标签 encoding xslt msxml

我正在使用IXMLDOMDocument::transformNode从 MSXML 3.0 开始应用 XSLT 转换。每个转换都有一个 xsl:output 指令,指定 UTF-8 作为编码。例如,

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
                ...
                xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                xmlns:str="http://exslt.org/strings"
                xmlns:math="http://exslt.org/math"
                extension-element-prefixes="str math">
  <xsl:output encoding="UTF-8" indent="yes" method="xml" />
  ...
</xsl:stylesheet>

但转换后的结果始终是 UTF-16(编码属性为 UTF-16)。

<?xml version="1.0" encoding="UTF-16"?>

这是 MSXML 中的错误吗?

出于各种原因,我真的很想要 UTF-8。有解决方法吗?或者我是否必须自己将转换后的结果转换为 UTF-8 并修补编码属性?

更新:我已经通过接受 UTF-16 编码并在前面添加字节顺序标记来解决该问题,这满足了转换结果的下游用户的需求,但我仍然对如何获取 UTF-8 输出感兴趣。

最佳答案

您可能将输出发送到 DOM 树或字符流,而不是字节流。如果是这种情况,那么就不是 MSXML 进行编码,并且最终编码所做的任何事情都不了解 xsl:output 指令(或者实际上是 XSLT)。

关于encoding - 使用 MSXML 的 XSLT 转换未使用正确的编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5267876/

相关文章:

encoding - Meteor:将图像从 url 保存到 AWS S3 存储

http - MSXML2.XMLHTTP 请求验证在 ASP Classic 中输入的 URL

c++ - MSXML 的 loadXML 无法加载格式良好的 xml

html - 当存在 UTF-8 字符编码时,显示引号的问号图标

c# - 字节数组中 UTF8 XML 文档中 ASCII 字符串的编码

java - 显示西里尔字母的 libgdx

xslt - 在 XSLT 中显示所有全局参数

XML 到 CSV 应用 XSLT(格式问题、逻辑错误)

xml - 如何使用 XSLT 替换命名空间中的元素?

xml - 如何使用 vbscript 删除 XML 文件中的节点?