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