在内部,它调用 XmlReader.Create(string, XmlReaderSettings)。这使它具有与该方法调用相同的默认设置。根据Jeroen's comment中的链接,流输入的编码是从BOM(如果没有BOM,则默认为ASCII)自动检测出来的。
然而,根据此答案,通过传递一个TextWriter
(例如StreamWriter
),可以覆盖默认编码:
StreamReader reader = new StreamReader("somefile.xml", Encoding.GetEncoding(1252));
var x = XDocument.Load(reader);
Encoding.Default
。 - Jeroen MostertXDocument.Load()
仍将正确加载使用UTF8编码的XML文件 - 即使文件中的某些字符没有ASCII等效项。 - Matthew Watson<?xml ...
头文件。如果没有这样的头文件存在,它会切换到UTF-8。 - Heinzi