4

TextBoxおよびTextBlockに多くの文字を表示するテキストファイルをいくつか用意します。

これらのファイルを.NETWPFで正しく読み取って表示するにはどうすればよいですか?

fiがFileInfoであるファイル読み取り。

fileText = fi.OpenText().ReadToEnd();

WPFでは、üò°の�文字とその他の特殊文字を取得します。

複数のフォントを試しました。

文化はen-ENです。

ファイルをストリームとして読み取ると、特殊文字が表示されます

System.IO.Stream fsIn = fi.OpenRead();
if (fsIn.Length == 0) return;
int curInt = -1;
StringBuilder sb = new StringBuilder();
while ((curInt = fsIn.ReadByte()) >= 0)
{
    sb.Append((char)curInt);
} 

OpenText()は、すべての特殊文字をバイト253として読み取っているように見えます

私が学んだと思うのは、テキストがUTF8でエンコードされていないということです。UTF8は、制御に128-255を使用します。OpenText()はUTF8エンコーディングに使用されます。 WikiUFT8

4

2 に答える 2

4

fi.OpenTextStreamReaderを UTF8 エンコーディングで開きます。別のエンコーディングが必要な場合は、代わりにこれを使用します。

using (var reader = new StreamReader(fi.FullName, Encoding.Unicode))
    fileText = reader.ReadToEnd();

もちろん、FileInfo上記の呼び出しではパスのみが使用されているため、実際にはオブジェクトはまったく必要ありません。

于 2012-06-06T22:08:06.487 に答える
1

あなたは本質的にあなた自身の質問に答えました。テキスト ファイルは Unicode 形式ではありません。おそらく、特定のコード ページの ANSI です。このようなファイルを読み取るには、渡されたエンコーディングで StreamReader を使用できます。いくつかのサンプルがここにあります。

于 2012-06-05T23:58:19.770 に答える