XmlReaderの文字エンコーディングを変更する方法 質問する

XmlReaderの文字エンコーディングを変更する方法 質問する

シンプルな XmlReader があります:

XmlReader r = XmlReader.Create(fileName);

while (r.Read())
{
    Console.WriteLine(r.Value);
}

問題は、Xml ファイルにISO-8859-9文字が含まれているため、XmlReader が " Invalid character in the given encoding." 例外をスローすることです。先頭に行を追加することでこの問題を解決できます<?xml version="1.0" encoding="ISO-8859-9" ?>が、ソース ファイルを変更できない場合は、別の方法で解決したいと思います。XmlReader のエンコーディングを変更するにはどうすればよいですか?

ベストアンサー1

.NETでファイルをISO-8859-9として読み込むように強制するには、XmlReader.Createのオーバーロードの1つを使用します。例:

using(XmlReader r = XmlReader.Create(new StreamReader(fileName, Encoding.GetEncoding("ISO-8859-9")))) {
    while(r.Read()) {
        Console.WriteLine(r.Value);
    }
}

ただし、これはうまくいかないかもしれません。W3C XML 標準では、XML 宣言行が読み取られると、準拠パーサーは、以前に使用していたエンコーディングに関係なく、XML 宣言で指定されたエンコーディングに直ちに切り替える必要があると述べられているからです。あなたの場合、XML ファイルに XML 宣言がない場合、エンコーディングは UTF-8 になり、それでも失敗します。ここでは無意味なことを言っているかもしれませんが、試してみて確認してください。 :-)

おすすめ記事