精华内容
下载资源
问答
  • 常用字符编码

    千次阅读 2017-08-16 08:45:09
    常用字符编码有utf-8,GBK,GB2312。在计算机内储存文本信息用ASCII码,每一个字符对应一个唯一的ASCII码。每个汉字要对应唯一的ASCII码。这样国家制定了字符编码标准:GBK、GB2312等。GB是国标的意思,GBK和GB...

               常用 的字符编码有utf-8,GBK,GB2312。在计算机内储存文本信息用ASCII码,每一个字符对应一个唯一的ASCII码。每个汉字要对应唯一的ASCII码。这样国家制定了字符编码标准:GBK、GB2312等。GB是国标的意思,GBK和GB2312主要 用于汉字的编码。而utf-8是全世界通用的。GBK和GB2312文字的储存体积较小(utf-8)。如果你的网页使用了GB2312编码,却被一台没有GB2312编码的电脑访问了,里面所有的汉字都成了乱码。而utf-8是所有电脑都有的。

           UTF-8(8-bit Unicode Transformation Format)是一种针对Unicode的可变长度字符编码,又称万国码。UTF-8用1到6个字节编码Unicode字符。允许含有BOM,但通常不含有BOM。英文使用一个字节编写,中文三个或四个字节编写。

           GBK、GB2312收编的汉字占2个字节,即不论中、英文字符均使用双字节来表示,为了区分中文,将其最高位都设定成1。

           UTF-8和GBK之间的转换:

        String a = "你好,中国";
        String b = new String(a.getBytes("GBK") , "utf-8");

    展开全文
  • 常用字符编码详解.doc

    2009-11-01 22:29:10
    常用字符编码详解.doc常用字符编码详解.doc
  • MFC常用字符编码转换

    千次阅读 2017-11-20 00:57:33
    MFC中几种字符

    MFC中几种字符串的理解

    CStringT

    CStringT为模板类,CString、CStringA、CStringW为其三种具体实现;

    CStringA

    该类在系统中定义为:
    typedef ATL::CStringT< char, StrTraitMFC_DLL< char > > CStringA;
    即该类型字符串中的字符实际上为==char==类型,用1个字节表示;

    CStringW

    该类型在系统中的定义为:
    typedef ATL::CStringT< wchar_t, StrTraitMFC_DLL< wchar_t > > CStringW;
    该类型字符串中的字符类型为==wchar_t==类型,称为宽字符类型,在不同环境中,宽字符类型具体长度不同,在MSVS中该类型用2个字节表示;

    CString

    该类型在系统中的定义为:
    typedef ATL::CStringT< TCHAR, StrTraitMFC_DLL< TCHAR > > CString;
    其中字符的类型为==TCHAR==,而TCHAR在系统中的定义为:

    #ifdef  UNICODE     
    typedef wchar_t TCHAR;  
    #else   
    typedef char TCHAR; 

    由上述代码可以看出,当编码方式为UNICODE的时候,CString与CStringW一样;否则,CString与CStringA一样;
    即CString中字符具体表示方式取决于当前环境的编码方式;

    字符串之间的转换


    从wchar_t转换成char*
        CStringW srcstrW;
        int dBufSize = WideCharToMultiByte(CP_OEMCP, 0, srcstrW, -1, NULL, 0, NULL, FALSE);
        char *pBuf = new char[dBufSize + 1];
        memset(pBuf, 0, dBufSize + 1);
        WideCharToMultiByte(CP_OEMCP, 0, srcstrW, -1, pBuf, dBufSize, NULL, FALSE);
        //pBuf为转换后的字符串指针

    封装成函数:

    /*  
    函数名称:CStringW2char
    函数说明:将CStringW字符串转换成char类型的指针
    参数说明:CStringW类型的字符串
    返回值:char类型指针
    注意:使用后需释放内存;
    */      
    char* CStringW2char(CString srcstrW)    
    {   
        int dBufSize = WideCharToMultiByte(CP_OEMCP, 0, srcstrW, -1, NULL, 0, NULL, FALSE);
        char *pBuf = new char[dBufSize + 1];
        memset(pBuf, 0, dBufSize + 1);
        WideCharToMultiByte(CP_OEMCP, 0, srcstrW, -1, pBuf, dBufSize, NULL, FALSE);
        pBuf[dBufSize] = '\0';
        return pBuf;
    }

    由于char*与string之间的转换较为直接,为了避免内存分配释放问题,可将其封装为CStringW转换到string的函数;

    /*
    函数名称:CStringW2string
    函数说明:将CStringW字符串转换成string字符串
    参数说明:CStringW类型的字符串
    返回值:string类型的字符串;
    */  
    string CStringW2string(CString srcstrW)
    {
        int dBufSize = WideCharToMultiByte(CP_OEMCP, 0, srcstrW, -1, NULL, 0, NULL, FALSE);
        char *pBuf = new char[dBufSize + 1];
        memset(pBuf, 0, dBufSize + 1);
        WideCharToMultiByte(CP_OEMCP, 0, srcstrW, -1, pBuf, dBufSize, NULL, FALSE);
        pBuf[dBufSize] = '\0';
        string tmpstr = pBuf;
        delete pBuf;
        pBuf = NULL;
        return tmpstr;
    }

    从char*转换成wchar_t
        char srcstr[str_len];
        int dBufSize = MultiByteToWideChar(CP_UTF8, 0, srcstr, -1, NULL, 0);
        WCHAR *pBuf = new WCHAR[dBufSize + 1];
        memset(pBuf, 0, dBufSize + 1);
        MultiByteToWideChar(CP_UTF8, 0, srcstr, -1, pBuf, dBufSize);
        //pBuf为转换后的字符串指针

    封装成函数

    /*
    函数名称:char2wchar
    函数说明:将char*类型指针转换成WCHAR*类型的指针;
    参数说明:char*类型的指针
    返回值:WCHAR*类型的指针
    注意:使用后需释放内存,作为参数传入的指针未释放;
    */
    WCHAR* char2wchar(char *pstr)
    {
        int dBufSize = MultiByteToWideChar(CP_UTF8, 0, pstr, -1, NULL, 0);
        WCHAR *pBuf = new WCHAR[dBufSize + 1];
        memset(pBuf, 0, dBufSize + 1);
        MultiByteToWideChar(CP_UTF8, 0, pstr, -1, pBuf, dBufSize);
        pBuf[dBufSize] = '\0';
        return pBuf;
    }

    同样的,可以将由char*指针指向的字符串转换成CStringW类型的字符串

    /*
    函数名称:char2CStringW
    函数说明:将char*类型指针转换成CStringW字符串,
    参数说明:char*类型的指针
    返回值:CStringW类型的字符串
    注意:作为参数传入的指针未释放;
    */
    CStringW char2CStringW(char *pstr)
    {
        int dBufSize = MultiByteToWideChar(CP_UTF8, 0, pstr, -1, NULL, 0);
        WCHAR *pBuf = new WCHAR[dBufSize + 1];
        memset(pBuf, 0, dBufSize + 1);
        MultiByteToWideChar(CP_UTF8, 0, pstr, -1, pBuf, dBufSize);
        pBuf[dBufSize] = '\0';
        CStringW tmpstrW = pBuf;
        delete pBuf;
        return tmpstrW;
    }   

    展开全文
  • 常用字符编码

    千次阅读 2011-02-21 00:32:00
    这就是字符编码的作用了。在早期计算机主要应用中所用到的字符很少,仅为26个英文字母和一些特殊的符号,要对这些字符进行相应的编码,我们只需要一个字节(8位二制数据,可能表示256个字符)而这以足够应符当时的...

    常用字符编码      Write by Jack.Hao

    我们看到的一切数据在计算机中都是以二进制的形势存在的,为什么却可以看到不同的字符呢?这就是字符编码的作用了。在早期计算机主要应用中所用到的字符很少,仅为26个英文字母和一些特殊的符号,要对这些字符进行相应的编码,我们只需要一个字节(8位二制数据,可能表示256个字符)而这以足够应符当时的需求。然而我们表示的时候只用到了后7位,首位为零,这样可以表示128个字符,这就是我们常听的ASCII码了。

    各种字符编码的集合就字符集!

     

    <!--=========================== Write by Jack.Hao=========================-->

     

    下面介绍几种常见的字符编码:

     

    1.ASCII码:

      ASCII(American Standard Code for Information Interchange,美国国家信息交换编码)码,主要应用于英文字符的编码。每一个ASCII码占8位(一个字节),最高位为0,这些字符在0~127之间,最多可表示128个字符。另位128个作为扩展,最高位为1时,表示的一些特殊的符号(图形符)。

     

      但随着计算机的发展,被各地所使用,而ASCII码缺少对各地字符编码的支持,这已不能满足人们的需求,为些各地ASCII码进行扩展或重新编码,从而产生了各种不同字符集,但它们都对ASCII中的字符提供了支持。

     

    2.ISO8859-1

      ISO8859-1(又称Latin-1)编码,它是在ASCII码的基础扩展而形成的,又加上了对西欧字符的支持。其中0~127所表示的字符与ASCII码相同,只是又包含了128~255包含了西欧所用的一些字符。

     

    3.GB2312GBK

    这个编码大家应该不陌生吧~~

    GB2312是中国人民共和国国家标准汉字交换编码,由我国国家标准总局制定发布,适用于中国大陆和新加坡地区。为了和ASCII码区分,GB2312用两个字节表示,每个字节的最高位都为1

    GB2312中一共包括了6762个汉字,算上其它一些控制键和其它字符,一共7573个。GB2312将代码表分为94个区,对应第一字节。每个区94个位,对应第二字节。01-09区为符号、数字区,16-87区为汉字区,10-15区、88-94为等待扩展空白区。
         GB2312
    将收录的汉字分成两级:第一级是常用汉字计3755个,位于16-55区,按汉语拼音字母/笔形顺序排列;第二级汉字是次常用汉字计3008个,位于56-87区,按部首/笔画顺序排列。
    GB2312
    的编码范围为2121H-777EH,与ASCII有重叠,通行方法是将GB码两个字节的最高位置1以示区别。
         
    为了对更多的字符提供支持,在199512月,我国又颁布了GBK(国标2312的扩展版)。,在这套字符编码中,除了全部兼容GB2312中的所有字符以外,还对繁体中文和许多特殊符号进行了编码。它是现在windows中文系统默认的字符集。其中共包含了20902个汉字,其编码范围0x8140-oxfefe

    在中国大陆使用的计算机系统上,默认将GBKGB2312作为该系统的本地字符集。

     

     

    <!--======================== Write by Jack.Hao=======================-->

     

    每个地区都定义了自己的一套编码,平时还不会出什么问题,但一旦涉及到国际化,就会出现乱码问题。

    例:你用GB2312写的文件拿到美国的电脑上还想看一下,就会看到乱码,因为美国人使用的编码中并没有包含你所写的这些字符。

    为了解决国际化的问题,就特别需要一种全球统一的字符编码。

     

     

    4.Unicode

      Unicode(统一字符编码集),由ISO(国际标准化组织)将全世界的编码进行了统一编码。它使用两个字节表示。0~65535,共可表示65536个字符。其中包括了中文,西欧字符,日语,韩语,阿拉伯语,希腊语等等,包括了世界上决大多数和的字符。其中定义了40000多个字符,其它25000多个字符作为以后的扩展。定义的字符中包括20000多个汉字,11000多个韩语字符,还有其它字符。

    Unicode0~255的字符与ISO8859-1一致。

     

    这样就可以很好解决国际化中的乱码问题,只要用Unicode编写的文档然后拿到以地方再用Unicode码都可以正常的显示,而不再是乱码。

     

    这样好是好,但也有一个问题,大家想想,用两个字符去表示一个英文字符,是不是有点浪费存储空间啊,因为一个足矣~~~

     

    5.UTF-8

      既然Unicode这些浪费,大家就又在寻求一种新的字符编码来替代Unicode,这时UTF-8出场了!!

      UFT-8Eight-bit UCS Transformation Fomrat,它是UCSUniversal Character Set,通用字符集)的一个字集。

      它分三种情况:

        ASCII码保持原样,只占用一个字节。如果字符在0x0080~0x007f之间,它使用两个字节来表示,如果字符在0x0800~0xffff之间它采用三个字节来进行表示。例:如果为中文字符它会采用三个字符来表示。

     

    既然它们同为国际化的编码,之间就可以进行转换,转换规则如下:

    (1)如果Unicode的前9位是0,UTF-8用一个字节表示。UTF-8Unicode码最后7位二进制数据,最高位补零。

    例:Unicode/u0035=00000000 00110101

       UTF-8:00110101=0x35H

    (2)如果Unicode5位为零,则UTF-8采用两个字节表示。UTF-8的第一个字节前的前三位为固定的110开头,第一个字节的后5位为Unicode编码去掉前5位后的最高5位。第二个字节前二位固定以10开头,第二个字节的后六位取Unicode码的最低6位。

    (3)如果前两个都不行,那就只能转换为三个字节了。第一个字节以1110开头,第一个字节的后四位取Unicode码的最高四位。第二个字节以10开头,第二个这节的后六位为Unicode码的5-10位。第三个字节也以10开头,第三个字节的后六位取Unicode的最后六位。

     

    注意(1),(2),(3)顺序的含义,能转换为一个字节它当然不会转换为二个字节。

     

    <!--====================== Write by Jack.Hao===========================-->

     

    本文只是初略的介绍了几个常用的几种字符编码,常见的还有UTF-16,它是在Unicode编码的基础之上扩展形成的一种新的字符编码。UTF-16编码扩充并没有影响Unicode编码,一个用Unicode编码的字符就是UTF-16格式。如果大家想详解了解各种编码的底层,可以在网上搜索一下,很多的吗~~~

     

    注意:国际化的编码,如UTF-8UnicodeUTF-16,虽然在国际化时方便很好,但它也不会完全替代 本地编码。如Unicode表示一个英文字符也要2个字节,这样美国人会乐意的。UTF-8表示一个汉字却要三个字节,同样我们也不乐意。

    所以说在相当长的一段时间内国际化编码和本地编码将长期共存!

     

    参考书籍:Java Web开发详解 孙鑫

    转载请说明出处。。。。。。

    展开全文
  • 韩文字符编码总表
  • 字符编码常用种类介绍

    万次阅读 2018-11-06 14:31:10
    字符编码常用种类介绍 第一种:ASCII码 ASCII(American Standard Code for Information Interchange,美国信息交换标准代码)是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言。它是现今...

    字符编码的常用种类介绍

    在这里插入图片描述

    第一种:ASCII码

    ASCII(American Standard Code for Information Interchange,美国信息交换标准代码)是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言。它是现今最通用的单字节编码系统,并等同于国际标准ISO/IEC 646。如下图所示:
    在这里插入图片描述

    由于计算机是美国人发明的,因此,最早只有127个字母被编码到计算机里,也就是大小写英文字母、数字和一些符号,这个编码表被称为ASCII编码,比如大写字母 A的编码是65,小写字母 a的编码是97。后128个称为扩展ASCII码。

    在这里,每一位0或者1所占的空间单位为bit(比特),这是计算机中最小的表示单位,每8个bit组成一个字符,这是计算机中最小的存储单位。

    常见换算单位:

    bit 位,计算机中最小的表示单位

    8bit = 1bytes 字节,最小的存储单位,1bytes缩写为1B

    1KB=1024B

    1MB=1024KB

    1GB=1024MB

    1TB=1024GB

    第二种:GBK 和 GB2312

    对于我们来说能在计算机中显示中文字符是至关重要的,然而ASCII表里连一个偏旁部首也没有。所以我们还需要一张关于中文和数字对应的关系表。一个字节只能最多表示256个字符,要处理中文显然一个字节是不够的,所以我们需要采用两个字节来表示,而且还不能和ASCII编码冲突,所以,中国制定了GB2312编码,用来把中文编进去。

    第三种:Unicode

    但如以来,就会出现一个问题,各个国家都一套自己的编码,就不可避免会有冲突,这是该怎么办呢?

    因此,Unicode应运而生。Unicode把所有语言都统一到一套编码里,这样就不会再有乱码问题了。

    Unicode标准也在不断发展,但最常用的是用两个字节表示一个字符(如果要用到非常偏僻的字符,就需要4个字节)。现代操作系统和大多数编程语言都直接支持Unicode。

    现在,分析一下ASCII编码和Unicode编码的区别:

    ASCII编码是1个字节,而Unicode编码通常是2个字节。

    字母A用ASCII编码是十进制的65,二进制的01000001;

    字符0用ASCII编码是十进制的48,二进制的00110000;

    汉字“中”已经超出了ASCII编码的范围,用Unicode编码是十进制的20013,二进制的01001110 00101101。

    如果把ASCII编码的A用Unicode编码,只需要在前面补0就可以,因此,A的Unicode编码是00000000 01000001。

    但如果统一成Unicode编码,乱码问题从此消失了。但是,如果你写的文本基本上全部是英文的话,用Unicode编码比ASCII编码需要多一倍的存储空间,在存储和传输上就十分不划算。

    第四种:UTF-8

    基于节约的原则,出现了把Unicode编码转化为“可变长编码”的UTF-8编码。UTF-8编码把一个Unicode字符根据不同的数字大小编码成1-6个字节,常用的英文字母被编码成1个字节,汉字通常是3个字节,只有很生僻的字符才会被编码成4-6个字节。如果你要传输的文本包含大量英文字符,用UTF-8编码就能节省空间了。如下所示:
    在这里插入图片描述

    从上面的表格还可以发现,UTF-8编码有一个额外的好处,就是ASCII编码实际上可以被看成是UTF-8编码的一部分,所以,大量只支持ASCII编码的历史遗留软件可以在UTF-8编码下继续工作。

    我们总结一下现在计算机系统通用的字符编码工作方式:

    在计算机内存中,统一使用Unicode编码,当需要保存到硬盘或者需要传输的时候,就转换为UTF-8编码。

    用记事本编辑的时候,从文件读取的UTF-8字符被转换为Unicode字符到内存里,编辑完成后,保存的时候再把Unicode转换为UTF-8保存到文件。如下图:

    在这里插入图片描述
    从http://www.cnblogs.com/schut/p/8406897.html 搬运

    展开全文
  • /** * 判断字符串的编码 * @param str * @return */ public static String getEncoding(String str){ String encode = "GB2312"; try{ if(str.equals(new String(s...
  • 常用字符编码及乱码分析

    千次阅读 2019-08-01 10:58:07
    常见的编码 GBK、GB2312:表示国标编码,GDB包含简体中文和繁体中文,而DB2312只包含简体中文,也就是说,这两种编码都是描述中文的编码 UNICODE编码:Java提供的16进制编码,可以描述世界上任意的文字信息,但是有...
  • 本文属于 字符编码系列文章之一,更多请前往 字符编码系列。 题纲 基本概念 欧美的编码 ASCII码 ISO-8859-1编码 中文系列编码 GB2312编码 GBK编码 BIG5编码 GB18030编码 ANSI 编码 Unicode与UCS Unicod...
  • 收集了Word 中常用的 文字的 Ascll 编码,方便重复使用
  • 关于各种常用字符编码

    千次阅读 2012-12-30 22:16:06
    这是最早的一种编码,很多其他的编码都会兼容ascii编码,ascii编码只包含常用的英文字母,数字,以及一些特殊字符,还有部分控制字符。 每个字符由占用一个字节的存储空间,因为最多只包含127个字符,而一个字节(8...
  • Java字符编码查询及转换,可将常用的一些编码格式转换成utf-8
  • 几种常用字符编码

    千次阅读 2019-03-12 11:15:50
    常见的一些字符编码方式无非有:Unicode、ASCII、GBK、GB2312、UTF-8。下面先对常见的这一些字符编码方式作下说明: 1.ASCII码 这是美国在19世纪60年代的时候为了建立英文字符和二进制的关系时制定的编码规范...
  • UTF-8是国际通用的编码,以一个字节表示英语字符(兼容ASCII),以三个字节表示中文及其他语言,对所有国家需要使用的字符进行了编码。 GB2312/GBK是我国制定的中文编码标准,使用一个字节表示英语,两个字节表示...
  • 搞清常用编码特性是解决字符编码问题的基础。字符编码的识别与转换、分析各种乱码产生的原因、编程操作各种编码字符串(例如字符数计算、截断处理)等都需要弄清楚编码的特性。 了解一种字符编码主要是要了解...
  • Java常用字符编码详解

    千次阅读 2021-02-26 12:01:02
    Java常用字符集编码详解Web开发的时候经常会遇到一些字符编码的错误,如页面乱码等问题,所以有必要需对字符编码有所了解,以下是Ricki收集的一些资料(可能不是很全,但希望对你有所帮助)Java标准字符集:所谓Java...
  • 计算机字符编码——ASCII码和常用编码 ASCII码 基本介绍 上个世纪60年代, 美国制定了一套字符编码, 对英语字符与二进制位之间的关系, 做了统一规定,这被称为ASCII码。 ASCII码一共规定了128个字符的编码, 比如...
  • Python语言在网络爬虫领域应用的十分广泛。在爬虫的应用程序中,我们需要对...先开始我们不讲编程,不堆概念,我们讲讲故事:说说字符编码是如何变成今天这样的关于字符编码的概念太多太杂,当ASCII、GB2312、Unicod...
  • 字符集和字符编码

    2018-02-03 14:10:31
    详细介绍几种常用文件编码格式,ASCII、GB2312、GBK、GB18030、Big5、Unicode、UTF-8、UTF-16、UTF-32
  • 字符串常见的几种编码方式

    千次阅读 2016-10-28 15:31:56
    这是美国在19世纪60年代的时候为了建立英文字符和二进制的关系时制定的编码规范,它能表示128个字符,其中包括英文字符、阿拉伯数字、西文字符以及32个控制字符。它用一个字节来表示具体的字符,但它只用后7位来表示...
  • 主要介绍了PHP检测字符串是否为UTF8编码常用方法,列举了四个实例从不同的角度来实现这一功能,是非常实用的技巧,具有一定的学习借鉴价值,需要的朋友可以参考下
  • mysql 常用设置 字符编码、自动完成(自动提示)、监听外网ip,需要的朋友可以参考下
  • C++与字符集、字符编码

    千次阅读 2019-11-02 10:50:06
    字符编码 字符集与字符编码的关系 多种字符编码存在的意义 字符编码的发展历史 活动代码页 c++的多字节字符与宽字节字符 c++的多字节字符串与宽字节字符串 C++程序输出字符串的编码 字符串常量 参考文章 ...
  • 常见的几种字符编码方式

    千次阅读 2020-08-05 17:53:11
    (1)unicode编码: 用十六位二进制数表示一个字符 (2) utf-8: A用01000001表示,用两个八位存储中文。 输出的结果中出现乱码原因: 计算机只能处理0和1两个数字,所以想要处理文本,必须把文本变成0和1这样的数字,最...
  • 在现在的互联网,字符编码是互联网信息交互的一个重要基础,各种语言都有支持信息编码的机制,Python也不例外。Python除了字符编码之外,对于字节码和字符串两种类型有严格区分,字符串是本地可以读取的信息,字节码...
  • 关于字符串,字符编码

    千次阅读 2019-04-20 22:09:26
    所以不论是数字还是字符,都是需要转化成二进制串进行存储与运算的。 这里先提一个问题: 对于一个二进制数,计算机如何确定它具体表示什么类型的数据?例如,01001010既可以是整数74,又可以是字符’J’,计算机...
  • 参考回答:ASCII码话题:微机中常用的西文字符编码是什么?回答:微机中普遍使用的字符编码是ASCII码吗? 完全回答,是 ASCII有12字符 ANSI有256个字符(前12个和ASCII相同) unicode是双字节,理论上有大约...
  • 结合Java详谈字符编码和字符集

    万次阅读 多人点赞 2018-07-07 14:04:45
    字符编码和字符集是两个基础性的概念,很多开发人员对其都并不陌生,但是很少有人能将其讲得很准确。当应用出现乱码时,如何分析和定位原因,很多人仍是一头雾水。这篇文章,将从字符编码和字符集的相关概念开始讲解...
  • 什么是计算机中应用最普遍的字符编码发布时间:2020-08-07 11:15:28来源:亿速云阅读:127作者:Leah什么是计算机中应用最普遍的字符编码?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 393,872
精华内容 157,548
关键字:

常用字符编码