【发布时间】:2010-02-03 13:53:47
【问题描述】:
我在 SO 上看到了几篇关于从某些数据源加载 XML 文档的帖子,其中数据具有 Microsoft 专有的 UTF-8 前导码(例如,this one)。
但是,我找不到不涉及手动删除 BOM 字符的优雅(且有效!)解决方案。
比如有this example:
byte[] b = System.IO.File.ReadAllBytes("c:\\temp_file_containing_bom.txt");
using (System.IO.MemoryStream oByteStream = new System.IO.MemoryStream(b)) {
using (System.Xml.XmlTextReader oRD = new System.Xml.XmlTextReader(oByteStream)) {
System.Xml.XmlDocument oDoc = new System.Xml.XmlDocument();
oDoc.Load(oRD);
Console.WriteLine(oDoc.OuterXml);
Console.ReadLine();
}
}
...但它仍然不断抛出“无效数据”异常。
我的问题是我有一个巨大的字节数组,有时包含 BOM,有时却没有。我需要在 XMLDocument 中加载它。而且我不相信我是必须照顾“帮助”字节的人。
【问题讨论】:
标签: xml encoding byte-order-mark