前面用 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。
我个人认为最简单的方法是:
而最科学的方法应该是使用:new XmlTextWriter(System.IO.Stream, Encoding) 这个构造函数,请参见 使用 XmlTextWriter 时指定编码。