首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >FileInfo.OpenText()无法读取特殊字符,例如

FileInfo.OpenText()无法读取特殊字符,例如
EN

Stack Overflow用户
提问于 2012-06-06 02:50:52
回答 2查看 8.8K关注 0票数 4

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

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

文件读取,其中fi是一个FileInfo。

代码语言:javascript
复制
fileText = fi.OpenText().ReadToEnd();

在WPF中,我得到了�字符和其他特殊字符。

我尝试过多种字体。

文化是en-EN的。

如果我以流的形式读取文件,我会得到特殊字符

代码语言:javascript
复制
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进行控制。UTF8编码使用OpenText()。WikiUFT8

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-06-07 06:08:06

fi.OpenText使用UTF8编码打开一个StreamReader。如果您需要不同的编码,请使用以下代码:

代码语言:javascript
复制
using (var reader = new StreamReader(fi.FullName, Encoding.Unicode))
    fileText = reader.ReadToEnd();

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

票数 4
EN

Stack Overflow用户

发布于 2012-06-06 07:58:20

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10903120

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档