加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 以UTF8而不是UTF16输出DataTable XML

发布时间:2020-12-15 21:09:17 所属栏目:百科 来源:网络整理
导读:我有一个DataTable,我正在使用.Write XML(..)创建一个 XML文件,虽然我有一个问题,它导出UTF-16编码,似乎没有明显的方法来改变它.我知道.NET在字符串内部使用UTF-16,这是正确的吗? 然后我运行DataTable.WriteXML()通过XSLT生成的XML,该XSLT在输出声明中包含
我有一个DataTable,我正在使用.Write XML(..)创建一个 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?

解决方法

结果文档的编码由< xsl:output>的编码属性确定.指令 – 而不是包含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中,您可能需要将作为参数传递的XmlWriter的特定设置指定给XslCompiledTransform.Transform()方法.有关如何在XmlWriterSettings类中指定所需编码的详细信息,请参阅this.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读