0

既存の例で XML ドキュメントを作成するために使用しているアプリケーションがあります。しかし、それは重要ではありません。今日、開いているファイルのエンコーディングが ANSI の場合にエラーが発生することに気付きました。その前に、ファイル UTF-8 を使用していましたが、この問題は発生しませんでした。あなたは何をどのようにすべきですか?

コードの断片:

string filepath;
XmlDocument xdoc = new XmlDocument();
XmlElement root;
...............
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
    filepath = openFileDialog1.FileName;
    textBox1.Text = filepath;
    load();
}
...............
public void load()
{
    xdoc.Load(filepath);
    root = xdoc.DocumentElement;
...............

エラー:

タイプ 'System.Xml.XmlException' の未処理の例外が System.Xml.dll で発生しました 追加情報: 指定されたエンコーディングには無効な文字です。、行 35、位置 16。

その行にはキリル文字 (ロシア語) があります。しかし、このドキュメントを NotePad++ で UTF-8 に変換すると、正しく読み込まれました。

4

1 に答える 1

0

StreamReaderを使用して、正しいエンコーディングでファイルを読み取り、そのストリームを、ストリームを受け入れるXmlDocument オーバーロードに読み込むことができます。

using(var sr = new StreamReader(filepath, myEncoding))
{
   xdoc.Load(sr);
}

GetEncodingメソッドで取得できますmyEncoding

于 2013-08-14T12:13:55.533 に答える