ASP.NET 与 XML-生成的 XML 的编码

作者:vkvi 来源:ITPOW(原创) 日期:2008-4-22

前面用 XmlTextWriter 生成的编码是 UTF-16,而我们最常用的是 UTF-8,怎么办呢?以下代码表面上看起来不错:

StringBuilder media = new StringBuilder();

XmlWriterSettings settings = new XmlWriterSettings();
settings.Encoding = Encoding.UTF8;
settings.Indent = true;

using (XmlWriter writer = XmlWriter.Create(media, settings))

但非常遗憾,它不起作用,这是因为 .NET 字符串总是 UTF-16 的,所以 StringBuilder 也是 UTF-16。

我个人认为最简单的方法是:

  • 不使用:writer.WriteStartDocument();
  • 而使用:writer.WriteProcessingInstruction("xml", "version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\""); 此时 WriteEndDocument(); 不可用。

而最科学的方法应该是使用:new XmlTextWriter(System.IO.Stream, Encoding) 这个构造函数,请参见 使用 XmlTextWriter 时指定编码

相关文章