2010-08-13 82 views
4

我有一个DataTable,我使用.WriteXML(..)创建了一个XML文件,虽然我在使用UTF-16编码导出时遇到问题,并且似乎有没有明显的方式来改变这一点。我知道.NET在字符串内部使用UTF-16,这是正确的吗?以UTF8而非UTF16输出DataTable XML

我然后运行DataTable.WriteXML()产生通过包括在输出声明以下内容的XSLT的XML:

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

但尽管如此,从转换的输出是在UTF16,和我试图将这个XML文件输入到的系统不支持UTF16。

有没有办法强制输出到UTF-8?不是由包含XSLT转换的XML文档的XML声明 -

+0

好问题(+1)。查看我的答案获得完整的解决方案。 – 2010-08-13 13:30:37

回答

1

结果文档的编码由<xsl:output>指令encoding属性确定。

下面是一个例子:

<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的特定设置。请参阅this了解如何在XmlWriterSettings类中指定想要的编码。