C#簡單判斷字符編碼的方法
更新時間:2016年06月13日 09:38:28 作者:呂秀才
這篇文章主要介紹了C#簡單判斷字符編碼的方法,可實現(xiàn)判斷utf-8,unicode,ansi等編碼的功能,簡單實用,需要的朋友可以參考下
本文實例講述了C#簡單判斷字符編碼的方法。分享給大家供大家參考,具體如下:
public static string GetText(byte[] buff) { string strReslut = string.Empty; if (buff.Length > 3) { if (buff[0] == 239 && buff[1] == 187 && buff[2] == 191) {// utf-8 strReslut = Encoding.UTF8.GetString(buff); } else if (buff[0] == 254 && buff[1] == 255) {// big endian unicode strReslut = Encoding.BigEndianUnicode.GetString(buff); } else if (buff[0] == 255 && buff[1] == 254) {// unicode strReslut = Encoding.Unicode.GetString(buff); } else if (isUtf8(buff)) {// utf-8 strReslut = Encoding.UTF8.GetString(buff); } else {// ansi strReslut = Encoding.Default.GetString(buff); } } return strReslut; } // 110XXXXX, 10XXXXXX // 1110XXXX, 10XXXXXX, 10XXXXXX // 11110XXX, 10XXXXXX, 10XXXXXX, 10XXXXXX private static bool isUtf8(byte[] buff) { for (int i = 0; i < buff.Length; i++) { if ((buff[i] & 0xE0) == 0xC0) // 110x xxxx 10xx xxxx { if ((buff[i + 1] & 0x80) != 0x80) { return false; } } else if ((buff[i] & 0xF0) == 0xE0) // 1110 xxxx 10xx xxxx 10xx xxxx { if ((buff[i + 1] & 0x80) != 0x80 || (buff[i + 2] & 0x80) != 0x80) { return false; } } else if ((buff[i] & 0xF8) == 0xF0) // 1111 0xxx 10xx xxxx 10xx xxxx 10xx xxxx { if ((buff[i + 1] & 0x80) != 0x80 || (buff[i + 2] & 0x80) != 0x80 || (buff[i + 3] & 0x80) != 0x80) { return false; } } } return true; } // news.sohu.com private static bool isGBK(byte[] buff) { return false; }
更多關(guān)于C#相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《C#編碼操作技巧總結(jié)》、《C#中XML文件操作技巧匯總》、《C#常見控件用法教程》、《WinForm控件用法總結(jié)》、《C#數(shù)據(jù)結(jié)構(gòu)與算法教程》、《C#面向?qū)ο蟪绦蛟O(shè)計入門教程》及《C#程序設(shè)計之線程使用技巧總結(jié)》
希望本文所述對大家C#程序設(shè)計有所幫助。
相關(guān)文章
C#中把字符串String轉(zhuǎn)換為整型Int的小例子
這篇文章主要介紹了C#中把字符串String轉(zhuǎn)換為整型Int的小例子,本文使用TryParse方法實現(xiàn)轉(zhuǎn)換,需要的朋友可以參考下2014-08-08C#中把FastReport.Net報表控件的數(shù)據(jù)保存到數(shù)據(jù)庫
這篇文章介紹了在數(shù)據(jù)庫中保存FastReport.Net報表的方法,文中通過示例代碼介紹的非常詳細。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-06-06