靠 StreamReader 的 CurrentEncoding 来识别编码的注意

作者:vkvi 来源:ITPOW(原创) 日期:2012-4-23

StreamReader 有十个构造函数,我们说其中三个:

第一个构造函数是使用默认的编码读取文件。

第二个构造函数增加了一个参数 true/false,用来表示是否自动探测 BOM(文件前端标识文字编码的字节)。

第三个构造函数又增加了一个参数 encoding,因为有些编码(比如 GB2312、UTF7)就没有 BOM,就认识不到编码,就需要手动指定一个编码。

对于第一个构造函数,CurrentEncoding 就是 UTF-8。

对于第二个构造函数,如果识别到了编码,CurrentEncoding 就是识别到的编码,否则就是 UTF-8。

对于第三个构造函数,如果没有识别到编码,就是 encoding 指定的编码。

真的没有解决办法了吗?

我们还忽略了一个东西 Encoding.Default。

注意,此时 CurrentEncoding 就可以判断编码了,但是前提是一定要至少调用一个 Read(ReadToEnd 这些带 Read 的方法也可以) 之后。

相关文章