我有以下代码:
MemoryStream ms = new MemoryStream();
XmlWriter w = XmlWriter.Create(ms);
w.WriteStartDocument(true);
w.WriteStartElement("data");
w.WriteElementString("child", "myvalue");
w.WriteEndElement();//data
w.Close();
ms.Close();
string test = UTF8Encoding.UTF8.GetString(ms.ToArray());XML是正确生成的;但是,我的问题是字符串'test‘的第一个字符是this (char #239),这使得它对于一些xml解析器是无效的:这是从哪里来的?我到底做错了什么?
我知道我可以通过从第一个字符开始就解决这个问题,但我宁愿知道它为什么会出现在那里,而不是简单地修补问题。
谢谢!
发布于 2009-05-14 14:01:57
在这里找到了一个解决方案:https://timvw.be/2007/01/08/generating-utf-8-with-systemxmlxmlwriter/
我在顶端错过了这个:
XmlWriterSettings xmlWriterSettings = new XmlWriterSettings();
xmlWriterSettings.Encoding = new UTF8Encoding(false);
MemoryStream ms = new MemoryStream();
XmlWriter w = XmlWriter.Create(ms, xmlWriterSettings);感谢大家的帮助!
发布于 2009-05-14 13:56:40
问题是,编写器生成的XML是UTF-16,而您使用UTF-8将其转换为字符串。试着这样做:
StringBuilder sb = new StringBuilder();
using (StringWriter writer = new StringWriter(sb))
using (XmlWriter w = XmlWriter.Create(writer))
{
w.WriteStartDocument(true);
w.WriteStartElement("data");
w.WriteElementString("child", "myvalue");
w.WriteEndElement();//data
}
string test = sb.ToString();发布于 2009-05-14 13:54:39
您可以像这样更改编码:
w.Settings.Encoding = Encoding.UTF8;https://stackoverflow.com/questions/863437
复制相似问题