FileStream fs1 = new FileStream(folder + strPath, FileMode.Open);
byte[] bytes = new byte[fs1.Length];
fs1.Read(bytes, 0, bytes.Length);
// 设置当前流的位置为流的开始
fs1.Seek(0, SeekOrigin.Begin);
UniversalDetector Det = new UniversalDetector(null);
Det.HandleData(bytes, 0, bytes.Length);
Det.DataEnd();
//得到文档字符编码类型
string cLX = Det.GetDetectedCharset();
string Text = Encoding.GetEncoding(cLX).GetString(bytes);
//第2种方式
StreamReader sr = new StreamReader(fs1, Encoding.GetEncoding(cLX));
string str1 = sr.ReadToEnd();
UniversalDetector这个是个第三方的字符编码识别,准确率还是可以的
http://pan.baidu.com/s/1pJ5C6TX
UniversalDetector 源码链接如上