我正在将一个 XML 文件读入一个 .NET XMLDocument 中,该文件在其中一个元素的内部文本中包含版权符号。这是一个例子:
<value>© 1994-2009 All rights reserved.</value>
经检查,版权字符的十六进制值为 0xA9,前一个字节的值为 0xC2。此文件以 ISO-8859-1 编码。
问题是当我将 XMLDocument 的内容保存到一个新文件(没有任何修改)时,内部文本被修改为以下内容:
<value>? 1994-2009 All rights reserved.</value>
XMLDocument.Save 输出的文件的值是 0x3F(ASCII 的“?”字符)代替原始文件中的 0xC2 0xA9 字节序列,并且声明为具有相同的 ISO-8859-1 编码。
这是在我的单元测试环境中重现问题的一段代码:
Dim xmldoc As New XmlDocument()
xmldoc.LoadXml("base.xml")
Dim filename As String = Me.GetType().Name & "-" & TestContext.TestName & ".xfdl"
Console.WriteLine("Saving file: " & IO.Path.Combine(TestContext.TestDeploymentDir, filename))
xmldoc.Save(filename)
如何保留此节点内部文本的正确编码?这是编码问题还是其他问题?
此外,我尝试使用流来指定编码,例如 John 在下面指出的,但没有成功。