将一些文本文件显示为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
答案 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。