【问题标题】:Output DataTable XML in UTF8 rather than UTF16以 UTF8 而不是 UTF16 输出 DataTable XML
【发布时间】:2011-03-29 11:01:51
【问题描述】:

我有一个 DataTable,我正在使用 .WriteXML(..) 创建一个 XML 文件,尽管我在以 UTF-16 编码导出它时遇到了问题,而且似乎没有明显的方法可以改变它。我知道 .NET 在字符串内部使用 UTF-16,这是正确的吗?

然后,我将运行 DataTable.WriteXML() 通过 XSLT 生成的 XML,该 XSLT 在输出声明中包含以下内容:

<xsl:output method="xml" indent="yes" encoding="utf-8" />

但是,转换的输出仍然是 UTF16,而我试图输入这个 XML 文件的系统不支持 UTF16。

有没有办法强制输出为 UTF-8?

【问题讨论】:

  • 好问题 (+1)。请参阅我的答案以获得完整的解决方案。

标签: c# xml xslt utf-8 datatable


【解决方案1】:

结果文档的编码由&lt;xsl:output&gt; 指令的encoding 属性决定——而不是由包含 XSLT 转换的 XML 文档的 XML 声明决定。 p>

这是一个例子:

<xsl:stylesheet version="1.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:output encoding="utf-8"/>

 <xsl:template match="/">
   <t>Hello, world!</t>
 </xsl:template>
</xsl:stylesheet>

当应用于任何 XML 文档(未在此简单演示中使用)时,会产生所需的结果:

<?xml version="1.0" encoding="utf-8"?><t>Hello, world!</t>

注意:在 .NET 中,您可能需要指定作为参数传递给 XslCompiledTransform.Transform() 方法的 XmlWriter 的特定设置。有关如何在 XmlWriterSettings 类中指定所需编码的详细信息,请参阅 this。

【讨论】:

    猜你喜欢
    • 2016-07-29
    • 2014-09-11
    • 2014-11-29
    • 2011-03-04
    • 2011-12-03
    • 2014-02-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多