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

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

(0)

相关推荐

  • C#判断字符编码的方法总结(六种方法)

    本文实例总结了C#判断字符编码的方法.分享给大家供大家参考,具体如下: 方法一 在unicode 字符串中,中文的范围是在4E00..9FFF:CJK Unified Ideographs. 通过对字符的unicode编码进行判断来确定字符是否为中文. protected bool IsChineseLetter(string input,int index) { int code = 0; int chfrom = Convert.ToInt32("4e00", 16); //范围(

  • c#通过unicode编码判断字符是否为中文示例分享

    复制代码 代码如下: protected bool IsChineseLetter(string input,int index){int code = 0;int chfrom = Convert.ToInt32("4e00", 16); //范围(0x4e00-0x9fff)转换成int(chfrom-chend)int chend = Convert.ToInt32("9fff", 16);if (input != ""){code = C

  • c# Base64编码和图片的互相转换代码

    事出有因 我们已经做了一个编辑器,这个编辑器可以以xml格式存储一些信息.在存储图片信息时我们碰到了一些问题.我们本来在xml信息中存储的是图片的路径,然而一旦客户把这个信息copy到其他电脑上而没有同时copy相关的图片时,就会出现一些问题.          后来,我们把图片数据转换为Base64编码,替代了原先存储图片路径的方式. 转换流程 将图片转化为Base64字符串的流程是:首先使用BinaryFormatter将图片文件序列化为二进制数据,然后使用Convert类的ToBase64

  • C# Base64编码函数

    一. Base64的编码规则        Base64编码的思想是是采用64个基本的ASCII码字符对数据进行重新编码.它将需要编码的数据拆分成字节数组.以3个字节为一组.按顺序排列24 位数据,再把这24位数据分成4组,即每组6位.再在每组的的最高位前补两个0凑足一个字节.这样就把一个3字节为一组的数据重新编码成了4个字节.当所要编码的数据的字节数不是3的整倍数,也就是说在分组时最后一组不够3个字节.这时在最后一组填充1到2个0字节.并在最后编码完成后在结尾添加1到2个 "=".

  • C#实现获取文本文件的编码的一个类(区分GB2312和UTF8)

    以下是获取文件编码的一个类: using System; using System.IO; using System.Text; /// <summary> /// FileEncoding 的摘要说明 /// </summary> namespace FileEncoding { /// <summary> /// 获取文件的编码格式 /// </summary> public class EncodingType { /// <summary>

  • asp.C#实现图片文件与base64string编码解码

    图片当然是存在那个js文件里面,于是我就打开了flashblocker.js,然后浏览一下,找到下面一句: var flash = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAA......' (小白)<SPAN style="FONT-SIZE: small">这是我第一次认识到base64的用场,记得以前保存网页的时候,总习惯保存为.mht格式,因为这样会把网页中的图片也保存下来,但是一直奇怪为何

  • C#中字符串编码处理

    GB2312是简体中文系统的标准编码 用"区" 跟"位"的概念表示 称之为区位码 区指代大的范围 位相当于偏移量.每个汉字占两个字节高位字节"的范围是0xB0-0xF7,"低位字节"的范围是0xA1-0xFE.它的规律好像是按拼音a到z的顺序排列的"啊"字是GB2312之中的第一个汉字,它的区位码就是1601为此我们现在用代码的方式输出一个汉字c#下是little字节序 b0跑后面去了. 复制代码 代码如下: ush

  • c#字符串编码编码(encoding)使用方法示例

    Unicode有四种编码格式,UTF-8, UTF-16,UTF-32,UTF-7. 字符编码类,ASCIIEncoding ,UTF7Encoding,UnicodeEncoding,UTF32Encoding. 复制代码 代码如下: using System.Collections.Generic;using System.Text; namespace AsciiEncodingDemo{    class Program    {        static void Main(stri

  • c#中文gbk编码查询示例代码

    复制代码 代码如下: private void button_Inquriy_Click(object sender, EventArgs e) {     if (textBox_Inquiry.TextLength > 0)     {         String strInquiry = textBox_Inquiry.Text;         byte[] bytes = Encoding.GetEncoding("GB2312").GetBytes(strInqui

  • C# Quoted-Printable编码、解码

    复制代码 代码如下: # using System; # using System.Collections; # using System.Text; # # /// <summary> # /// Class for encoding and decoding a string to QuotedPrintable # /// RFC 1521 http://www.ietf.org/rfc/rfc1521.txt # /// RFC 2045 http://www.ietf.org/rfc

随机推荐