使用StreamReader读取文件时的文件编码

时间:2009-03-12 20:00:41

标签: .net encoding compact-framework streamreader

我现在遇到的问题是Celsius符号被读为C而不是°C。

看起来编码是罪魁祸首。我试着这样做:

            using (StreamReader sr = new StreamReader(this._inFilePath,System.Text.Encoding.Unicode ,true))

而不是

            using (StreamReader sr = new StreamReader(this._inFilePath))

但我现在变得垃圾....原始文件编码是否必须匹配StreamReader编码?我正在使用紧凑的框架2.0。

我在网上发现了this,但是如果使用这个,我已经将它全部读入一个字节数组,检测每一行的结尾,将其转换为Unicode,然后继续执行程序逻辑。有人用这个班吗?

1 个答案:

答案 0 :(得分:2)

是的,您需要在构造StreamReader时指定正确的编码。 .NET可能能够为您检测编码。 StreamReader构造函数有重载,它带有一个布尔参数,可用于请求此行为。

public StreamReader(string path,bool detectEncodingFromByteOrderMarks)