2010-08-13 44 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類中指定想要的編碼。