将DataTable XML输出为UTF8而不是UTF16

4
我有一个DataTable,我正在使用.WriteXML(..)创建一个XML文件,但是我遇到了一个问题,它以UTF-16编码导出,并且似乎没有明显的方法可以更改此设置。我了解.NET在字符串内部使用UTF-16,这是正确的吗?
然后,我通过XSLT运行DataTable.WriteXML()生成的XML,其中包括以下内容的输出声明:
<xsl:output method="xml" indent="yes" encoding="utf-8" />

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

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


好问题(+1)。请查看我的答案,其中包含完整的解决方案。 - Dimitre Novatchev
1个回答

1

结果文档的编码是由 <xsl:output> 指令的 encoding 属性确定的,而不是包含 XSLT 转换的 XML 文档的 XML 声明。

以下是一个示例:

<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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接