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#程序设计有所帮助。

时间: 2016-06-12

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

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

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#通过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#中字符串编码处理

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

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

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

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# Base64编码函数

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

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

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

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

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); //范围(

Python使用chardet判断字符编码

本文实例讲述了Python使用chardet判断字符编码的方法.分享给大家供大家参考.具体分析如下: Python中chardet 用来实现字符串/文件编码检测模板 1.chardet下载与安装 下载地址:http://pypi.python.org/pypi/chardet 下载chardet后,解压chardet压缩包,直接将chardet文件夹放在应用程序目录下,就可以使用import chardet开始使用chardet了,也可以将chardet拷贝到Python系统目录下,这样你所有的

JS实现数组去重方法总结(六种方法)

方法一: 双层循环,外层循环元素,内层循环时比较值 如果有相同的值则跳过,不相同则push进数组 Array.prototype.distinct = function(){ var arr = this, result = [], i, j, len = arr.length; for(i = 0; i < len; i++){ for(j = i + 1; j < len; j++){ if(arr[i] === arr[j]){ j = ++i; } } result.push(arr[

ajax代理程序,自动判断字符编码

由于ajax在跨域的访问上有问题,目前最好的方法是做代理.写了个代理程序和心得 为了做ajax的代理,研究了下服务器端的xmlhttp并和客户端的ajax中的xmlhttp做了个比较,后台代码是asp的 服务器端的xmlhttp也就是asp小偷程序,我把代码改成了javascript. 1.在服务器端的xmlhttp.Open("GET",url,false)异步必须是关闭的,而客户端的异步是打开的,这个很好理解. 2.在服务器端的xmlhttp.Responsebody 这里用的是R

C# 判断字符为空的6种方法的效率实测对比

C#中提供了相当丰富的方法或属性来判断一个字符是否为空,常用的方法有以下6种 1. strTest== "" 2. strTest.Equals("") 3. strTest== string.Empty 4. strTest.Equals(string.Empty) 5. strTest.Length == 0 6. string.IsNullOrEmpty(strTest) 为了对以上6种方法的效率,有个直观的感受,我特意编写了以下的测试代码: using Sy

彻底搞懂Python字符编码

不论你是有着多年经验的 Python 老司机还是刚入门 Python 不久,你一定遇到过UnicodeEncodeError.UnicodeDecodeError 错误,每当遇到错误我们就拿着 encode.decode 函数翻来覆去的转换,有时试着试着问题就解决了,有时候怎么试都没辙,只有借用 Google 大神帮忙,但似乎很少去关心问题的本质是什么,下次遇到类似的问题重蹈覆辙,那么你有没有想过一次性彻底把 Python 字符编码给搞懂呢? 完全理解字符编码 与 Python 的渊源前,我们有

Python字符编码判断方法分析

本文实例讲述了Python字符编码判断方法.分享给大家供大家参考,具体如下: 方法一: isinstance(s, str) 用来判断是否为一般字符串 isinstance(s, unicode) 用来判断是否为unicode 或 if type(str).__name__!="unicode": str=unicode(str,"utf-8") else: pass 方法二: Python chardet 字符编码判断 使用 chardet 可以很方便的实现字符串

Python字符编码与函数的基本使用方法

一.Python2中的字符存在的解码编码问题 如果是现在正在用Python2的人应该都知道存在字符编码问题,就举一个最简单的例子吧:Python2是无法在命令行直接打印中文的,当然他也是不会报错的,顶多是一堆你看不懂的乱码.如果想在直接显示中文,我们是可以在Python2文件头部申明字符编码的格式.如下图 这里 #-*-coding:utf-8 -*- 是用来申明下面的代码是用什么编码来解释: 1.1.Python2中的解码和编码: 在编码和解码的世界中,我们得需要找一个大家都知道的文字.也可以

Python中字符编码简介、方法及使用建议

1. 字符编码简介 1.1. ASCII ASCII(American Standard Code for Information Interchange),是一种单字节的编码.计算机世界里一开始只有英文,而单字节可以表示256个不同的字符,可以表示所有的英文字符和许多的控制符号.不过ASCII只用到了其中的一半(\x80以下),这也是MBCS得以实现的基础. 1.2. MBCS 然而计算机世界里很快就有了其他语言,单字节的ASCII已无法满足需求.后来每个语言就制定了一套自己的编码,由于单字节