FileInfo.OpenText()无法读取特殊字符E.G. UO°

时间:2012-06-05 18:50:52

标签: .net wpf utf-8 fileinfo opentext

将一些文本文件显示为TextBox和TextBlock中的许多字符。

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

文件读取fi是FileInfo。

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

在WPF中,我获得了üò°和其他特殊字符的 字符。

尝试了多种字体。

文化是en-EN。

如果我将文件作为Stream读取,我会得到特殊字符

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

2 个答案:

答案 0 :(得分:3)

fi.OpenText使用UTF8编码打开StreamReader。如果您需要不同的编码,请改用:

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

当然,您根本不需要FileInfo对象,因为上述调用只使用了路径。

答案 1 :(得分:1)

你基本上回答了自己的问题。您的文本文件不是Unicode格式 - 在某些特定代码页中它可能是ANSI。要读取此类文件,您可以使用传入编码的StreamReader。有一些示例here