4

有一些文本文件在 TextBox 和 TextBlock 中显示许多字符为 �。

如何在 .NET WPF 中正确读取和显示这些文件?

文件读取,其中 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 编码。 维基UFT8

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 回答