txt文件中文字符读取乱码问题

在StreamRead类的对象实例化时,StreamRead构造函数共有10个重载,其中以stream参数开始的重载就有5个:

public StreamReader(Stream stream);

public StreamReader(Stream stream,
bool detectEncodingFromByteOrderMarks);

public StreamReader(Stream stream, Encoding encoding);

public StreamReader(Stream stream, Encoding encoding,
bool detectEncodingFromByteOrderMarks);

public StreamReader(Stream stream, Encoding encoding,
bool detectEncodingFromByteOrderMarks, int bufferSize);

默认使用第一个时,读取含中文字符的txt文件将出现乱码,查了下资料,应使用第三种重载,即:

StreamReader streamReader =
new StreamReader(fileStream,System.Text.Encoding.Default);

Encoding.Default将获取当前系统的 ANSI 代码页的编码,文件读取的应遵循文件编码和Encoding编码一致。

参考资料
1、MSDN 编码和本地化
2、字符编码

Posted in 未分类 | Tagged | Leave a comment