XDocument.Load假设什么是默认编码?

时间:2018-02-08 15:50:07

标签: c# .net xml base-class-library

如果我使用XDocument.Load来解析XML文件......

var x = XDocument.Load("somefile.xml");

... 没有<?xml version="1.0" encoding="..."?>标题......

<MyRootElement>
   ...
</MyRootElement>

... XDocument.Load假设的默认编码是什么? ANSI(即系统默认的遗留语言环境)? UTF-8?还有别的吗?

我有checked the documentation,但那里没有记录。我也查看了reference source,但在深入XmlReader来源后放弃了。

1 个答案:

答案 0 :(得分:2)

在内部,calls XmlReader.Create(string, XmlReaderSettings)。这使它与该方法调用具有相同的默认值。根据{{​​3}}的链接,可以从BOM中自动检测流输入的编码(如果没有BOM,则为Jeroen's comment。)

但是,根据default being ASCII,可以通过传入TextWriter(例如StreamWriter)来覆盖默认编码:

StreamReader reader = new StreamReader("somefile.xml", Encoding.GetEncoding(1252));
var x = XDocument.Load(reader);