XmlDocument.LoadXml()和XML声明编码属性

时间:2013-02-28 09:34:04

标签: c# .net

这可能是一个给定的,但我想要彻底;由于.NET的string类型是UTF-16,XmlDocument.LoadXml(string)只是忽略XML声明中的encoding属性,因为编码的文档应该已经转换为UTF-因为它包含在.NET字符串中吗?

1 个答案:

答案 0 :(得分:0)

XML属性决定了编码类型。

例如

 <?xml version="1.0" encoding="utf-8" ?>

这是它被读取的内容,然后它被转换为UTF-16字符串,但是如果你希望看到UTF-16字符,你就不会,它们将会丢失。

来自字符串here的MSDN文档:

  

字符串中的每个Unicode字符都由Unicode标量定义   值,也称为Unicode代码点或序数(数字)值   Unicode字符。每个代码点使用UTF-16编码   编码,以及编码的每个元素的数值   由Char对象表示。

这意味着当您使用XML标头传递XmlDocument.LoadXml()时,必须说编码是UTF-16。否则,实际的基础编码将与标头中报告的编码不匹配,并将导致抛出XmlException。

此处有扩展说明: Why does C# XmlDocument.LoadXml(string) fail when an XML header is included?