在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、字符编码