0

这可能是给定的,但我试图做到彻底;由于 .NET 的string类型是 UTF-16,是否XmlDocument.LoadXml(string)只是简单地忽略encodingXML 声明中的属性,因为文档编码的任何内容都应该已经转换为 UTF-16,因为它包含在 .NET 字符串中?

4

1 回答 1

0

XML 属性确定编码类型。

例如

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

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

这里的字符串的 MSDN 文档:

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

这意味着当您通过 XmlDocument.LoadXml() 传递带有 XML 标头的字符串时,它必须说编码是 UTF-16。否则,实际的底层编码将与标头中报告的编码不匹配,并将导致引发 XmlException。

此处的扩展说明: 为什么 C# XmlDocument.LoadXml(string) 在包含 XML 标头时会失败?

于 2013-02-28T09:36:36.907 回答