C#简单判断字符编码的方法

Valonia ·
更新时间:2024-09-21
· 584 次阅读

本文实例讲述了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#程序设计有所帮助。

您可能感兴趣的文章:C#判断字符编码的方法总结(六种方法)c#通过unicode编码判断字符是否为中文示例分享c#字符串编码编码(encoding)使用方法示例C#中字符串编码处理c# Base64编码和图片的互相转换代码C# Base64编码函数asp.C#实现图片文件与base64string编码解码C#实现获取文本文件的编码的一个类(区分GB2312和UTF8)C# Quoted-Printable编码、解码c#中文gbk编码查询示例代码



C# 方法 字符 编码 字符编码

需要 登录 后方可回复, 如果你还没有账号请 注册新账号