我有一个 ACII 编码的 XML 文件。
我尝试使用两种不同的 Microsoft XmlReader 实现来阅读它:
XmlReader.Create(new StreamReader(fileImport.FileContent, true));
new XmlTextReader(fileImport.FileContent)
第一个是 XmlReader.Create,它使用 StreamReader 进行编码,效果很好。
第二个,新的 XmlTextReader,抛出一个 XmlException,并带有消息“给定编码中的无效字符”。
如果您阅读了这两个的 MSDN 文档,它们都应该从字节顺序标记中检测编码,如果检测失败则回退到 UTF-8。
XmlTextReader
[msdn]
StreamReader
[msdn]
那么,为什么 XmlTextReader 会失败,编码无效,而 StreamReader 却没有,当文档说默认情况下两种实现都以相同的方式处理编码时?