【发布时间】:2014-07-08 12:09:45
【问题描述】:
我需要将一些对象序列化为 blob 以传递给 Web 服务调用。所有非常基本的东西。
问题的关键在于完成这项工作的代码的 sn-p 非常不灵活,因为在使用 StringWriter 时,输出的编码始终是 UTF-16
StringWriter stringWriter = new StringWriter();
serialiser.Serialize(stringWriter, Container.Calls);
string data = stringWriter.ToString();
这可以处理大多数情况,但我想让它尽可能通用并处理其他编码,所以我将上面的内容更改为这个(我的想法是我可以在以后重构并传入编码):
XmlTextWriter xmlTextWriter = new XmlTextWriter(stream,Encoding.Unicode);
serialiser.Serialize(xmlTextWriter, Container.Calls);
byte[] bytes = stream.GetBuffer();
string data = System.Text.Encoding.Unicode.GetString(bytes);
System.Text.Encoding.Unicode.GetString 不再返回有效的 xml,因为在流的开头有一个字节顺序标记。我可以调用 stream.Read 并指定 BOM 的偏移量,但是,取决于编码,我并不总是期望它存在,所以这可能会变得混乱。我真正需要的是它根本不存在。
【问题讨论】:
标签: .net xml serialization unicode encoding