繁星coding
public static Encoding GetFileEncoding(string fileName) { /*byte[] Unicode=new byte[]{0xFF,0xFE}; byte[] UnicodeBIG=new byte[]{0xFE,0xFF}; byte[] UTF8=new byte[]{0xEF,0xBB,0xBF};*/ try { FileStream fs = new FileStream(fileName, FileMode.Open, FileAccess.Read); BinaryReader r = new BinaryReader(fs, System.Text.Encoding.Default); byte[] ss = r.ReadBytes(3); r.Close(); fs.Close(); fs.Dispose(); if (ss[0] >= 0xEF) { if (ss[0] == 0xEF && ss[1] == 0xBB && ss[2] == 0xBF) return System.Text.Encoding.UTF8; else if (ss[0] == 0xFE && ss[1] == 0xFF) return System.Text.Encoding.BigEndianUnicode; else if (ss[0] == 0xFF && ss[1] == 0xFE) return System.Text.Encoding.Unicode; else return System.Text.Encoding.Default; } else return System.Text.Encoding.Default; } catch { return System.Text.Encoding.Default; } } 读文件之前先调用此方法取文件的编码。按取到的编码打开文件就不是乱码了。