【问题标题】:XmlWriterSettings have no effect on XmlWriter created from XmlDocumentXmlWriterSettings 对从 XmlDocument 创建的 XmlWriter 没有影响
【发布时间】:2011-01-15 09:54:11
【问题描述】:

我需要使用 ISO Latin 1 编码,但使用下面的编写器设置代码默认为 UTF8。我在这里错过了什么?

XmlDocument xmlDoc = new XmlDocument(); 
XmlWriterSettings settings = new XmlWriterSettings();
settings.ConformanceLevel = ConformanceLevel.Auto;
settings.Encoding = System.Text.Encoding.GetEncoding(28591);
using (XmlWriter writer = XmlWriter.Create(xmlDoc.CreateNavigato().AppendChild(), settings))
{
}

【问题讨论】:

    标签: c# .net xml settings


    【解决方案1】:

    问题在于底层流(在本例中为 xmlDoc 对象)使用的是 UTF-8,这是 .NET 中的默认编码。

    来自 XmlWriterSettings 的 Encoding property 的 MSDN 文档:

    Encoding 属性仅适用于使用指定 Stream 或使用指定文件名创建的 XmlWriter 实例。如果 XmlWriter 实例是使用指定的 TextWriter 创建的,则 Encoding 属性将被基础 TextWriter 的编码覆盖。例如,如果此属性针对特定 XmlWriter 设置为 Unicode (UTF-16),但底层编写器是一个 StreamWriter(它派生自 TextWriter)且其编码设置为 UTF-8,则输出将采用 UTF-8 编码.

    为了解决此问题,您需要使用拉丁 1 编码的流创建 XmlWriter。我认为您不能为此使用 XmlDocument

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-11-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多