我现在遇到的问题是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,然后继续执行程序逻辑。有人用这个班吗?
答案 0 :(得分:2)
是的,您需要在构造StreamReader时指定正确的编码。 .NET可能能够为您检测编码。 StreamReader构造函数有重载,它带有一个布尔参数,可用于请求此行为。
public StreamReader(string path,bool detectEncodingFromByteOrderMarks)