XmlWriter 生成XML,编码问题

XmlWriter.Create 有多个重载。包括 Stream 和 StringBuilder ,如果使用 StringBuilder ,由于StringBuilder 的问题,设置 Encoding 没有效果,声明 始终是 encoding="utf-16" 。

解决方法:

1,将 encoding="utf-16" 使用字符串替换(replace )为 encoding="utf-8" 。(不建议)

2,重载改为 Stream 。然后在读取 stream 流,拿出 xml 。

eg:

using (MemoryStream ms = new MemoryStream())
{
    WriteXml(ms);

    string result = Encoding.UTF8.GetString(ms.ToArray());
 
}


private void WriteXml(Stream stream)
{
    using (XmlWriter xw = XmlWriter.Create(stream))
    {
        xw.WriteStartDocument();

// TODO. 

        xw.WriteEndDocument();
    }
}

 

 

 

添加评论

Loading