C#简单判断字符编码的方法
程序员文章站
2022-05-28 19:23:57
本文实例讲述了c#简单判断字符编码的方法。分享给大家供大家参考,具体如下:
public static string gettext(byte[] buff)...
本文实例讲述了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; }
更多关于c#相关内容感兴趣的读者可查看本站专题:《c#编码操作技巧总结》、《c#中xml文件操作技巧汇总》、《c#常见控件用法教程》、《winform控件用法总结》、《c#数据结构与算法教程》、《c#面向对象程序设计入门教程》及《c#程序设计之线程使用技巧总结》
希望本文所述对大家c#程序设计有所帮助。