c#獲取檔案編碼型別
阿新 • • 發佈:2019-02-08
public class EncodingType //編碼問題目前為止,基本上沒人解決,就連windows的IE的自動識別有時還識別錯編碼呢。--yongfa365 //如果檔案有BOM則判斷,如果沒有就用系統預設編碼,缺點:沒有BOM的非系統編碼檔案會顯示亂碼。 //呼叫方法: EncodingType.GetType(filename) //來源:http://blog.csdn.net/listlofusage/archive/2007/02/10/1506900.aspx { public static System.Text.Encoding GetType(string FILE_NAME) { FileStream fs = new FileStream(FILE_NAME, FileMode.Open, FileAccess.Read); System.Text.Encoding r = GetType(fs); fs.Close(); return r; } public static System.Text.Encoding GetType(FileStream fs) { /*byte[] Unicode=new byte[]{0xFF,0xFE}; byte[] UnicodeBIG=new byte[]{0xFE,0xFF}; byte[] UTF8=new byte[]{0xEF,0xBB,0xBF};*/ BinaryReader r = new BinaryReader(fs, System.Text.Encoding.Default); byte[] ss = r.ReadBytes(3); r.Close(); //編碼型別 Coding=編碼型別.ASCII; 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; } } }