0

要素の 1 つの内部テキストに著作権記号を含む .NET XMLDocument に XML ファイルを読み込んでいます。次に例を示します。

<value>© 1994-2009 All rights reserved.</value>

調べてみると、著作権文字の 16 進値は 0xA9 で、前のバイトの値は 0xC2 です。このファイルは ISO-8859-1 でエンコードされています。

問題は、XMLDocument の内容を新しいファイルに (変更せずに) 保存すると、内部テキストが次のように変更されることです。

<value>? 1994-2009 All rights reserved.</value>

XMLDocument.Save によって出力されるファイルには、元のファイルの 0xC2 0xA9 バイト シーケンスの代わりに 0x3F (ASCII の「?」文字) の値があり、同じ 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)

このノードの内部テキストの適切なエンコーディングを維持するにはどうすればよいですか? これはエンコーディングの問題ですか、それとも別の問題ですか?

また、ジョンが以下で指摘するように、ストリームを使用してエンコーディングを指示しようとしましたが、成功しませんでした。

4

1 に答える 1