如何判断文本文件的编码方式?
文本文件通常通过其前2个字节来标识自身的编码方式,但UTF-32编码则通过前4个字节来标识自己的编码方式。下面是一些编码格式的标识:
编码方式 前几个字节值 ANSI 无格式定义 Unicode FF FE Unicode big endian FE FF UTF-8 EF BB UTF-16/UCS-2, little endian FE FF UTF-16/UCS-2, big endian FF FE UTF-32/UCS-4, little endian FF FE 00 00 UTF-32/UCS-4, big-endian 00 00 FE FF
这样一来,我们写代码的时候只需要读取文件的前2个字节~4个字节,即可知道其编码方式。但在.Net中,还有另一种更简单的办法可以知道文本文件的编码方式,及使用以下的代码:
public Encoding GetEncoding(string file)
{
var r = new StreamReader(file, true); //这里的true表示由程序自动判断文件编码
return r.CurrentEncoding; //返回编码
}