gpt4 book ai didi

c# - .Net XmlWriter - 意外的编码让我感到困惑

转载 作者:数据小太阳 更新时间:2023-10-29 01:44:18 26 4
gpt4 key购买 nike

环境是VS2008,.Net 3.5

以下C#代码(注意指定编码为UTF8)

XmlWriterSettings settings = new XmlWriterSettings ();
StringBuilder sb = new StringBuilder();
settings.Encoding = System.Text.Encoding.UTF8;
settings.Indent = false;
settings.NewLineChars = "\n";
settings.ConformanceLevel = System.Xml.ConformanceLevel.Document;

XmlWriter writer = XmlWriter.Create (sb, settings);
{
// Write XML data.
writer.WriteStartElement ("CCHEADER");
writer.WriteAttributeString ("ProtocolVersion", "1.0.0");
writer.WriteAttributeString ("ServerCapabilities", "0x0000000F");
writer.WriteEndElement ();
writer.Flush ();
}

实际生成 XML(<省略,因为 SO 对它们很反感):

?xml version="1.0"encoding="utf-16"?
CCHEADER ProtocolVersion="1.0.0"ServerCapabilities="0x0000000F"/

为什么我在这里生成了错误的编码?我做错了什么?

最佳答案

我怀疑这是因为它正在写入一个本质上是 UTF-16 的 StringBuilder。解决此问题的另一种方法是创建一个派生自 StringWriter 的类,但它会覆盖 Encoding 属性。

我相信我在 MiscUtil 中有一个- 但无论如何写起来都很简单。像这样:

public sealed class StringWriterWithEncoding : StringWriter
{
private readonly Encoding encoding;

public StringWriterWithEncoding (Encoding encoding)
{
this.encoding = encoding;
}

public override Encoding Encoding
{
get { return encoding; }
}
}

关于c# - .Net XmlWriter - 意外的编码让我感到困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/371930/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com