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

    2012-12-11 12:47:00
    清楚常用编码特性是解决字符编码问题的基础,字符集编码的识别与转换、分析各种乱码产生的原因、编程操作各种编码字符串(例如字符数计算、截断处理) 等都需要清楚编码的特性。  了解一种字符集编码主要是了解该...

    清楚常用编码特性是解决字符编码问题的基础,字符集编码的识别与转换、分析各种乱码产生的原因、编程操作各种编码字符串(例如字符数计算、截断处理) 等都需要清楚编码的特性。

        了解一种字符集编码主要是了解该编码的编码范围,编码对应的字符集(都包含哪些字符),以及和其它字符编码之间的关系等,以下将对我们日常编程中常见的字符编码做一个简单的总结。

    1. ASCII编码

    ASCII码是7位编码(仅占用了一个字节的后面7位,最高位为0),编码范围是0x00-0x7F,其中0x00-0x200x7F为控制字符(共33个)。

    ASCII字符集收录了包括英文字母、阿拉伯数字和标点符号等字符(共128个字符)。

    只支持ASCII码的系统会忽略每个字节的最高位,只认为低7位是有效位。HZ字符编码就是早期为了在只支持7ASCII系统中传输中文而设计的编码。早期很多邮件系统也只支持ASCII编码,为了传输中文邮件必须使用BASE64或者其他编码方式。

    2.ISO-8859-1编码

    ISO-8859-1编码是单字节编码,向下兼容ASCII,其编码范围是0x00-0xFF0x00-0x7F之间完全和ASCII一致,0x80-0x9F之间是控制字符,0xA0-0xFF之间是文字符号。

    ISO-8859-1收录的字符除ASCII收录的字符外,还包括西欧语言、希腊语、泰语、阿拉伯语、希伯来语对应的文字符号。(欧元符号出现的比较晚,没有被收录在ISO-8859-1当中。)

    因为ISO-8859-1编码范围使用了单字节内的所有空间,在支持ISO-8859-1的系统中传输和存储其他任何编码的字节流都不会被抛弃。换言之,把其他任何编码的字节流当作ISO-8859-1编码看待都没有问题。这是个很重要的特性,MySQL数据库默认编码是Latin1就是利用了这个特性。

    Latin1ISO-8859-1的别名,有些环境下写作Latin-1

    3. GB2312编码

    GB2312是基于区位码设计的, 区位码把编码表分为94个区, 每个区对应94个位,每个字符的区号和位号组合起来就是该汉字的区位码。区位码一般用10进制数来表示,如1601就表示161位,对应的字符是“啊”。在区位码的区号和位号上分别加上0xA0就得到了GB2312编码。

    区位码中01-09区是符号、数字区,16-87区是汉字区,10-1588-94是未定义的空白区。它将收录的汉字分成两级:第一级是常用汉字计3755个,置于16-55区,按汉语拼音字母/笔形顺序排列;第二级汉字是次常用汉字计3008个,置于56-87区,按部首/笔画顺序排列。一级汉字是按照拼音排序的,这个就可以得到某个拼音在一级汉字区位中的范围,很多根据汉字可以得到拼音的程序就是根据这个原理编写的。

    GB2312字符集中除常用简体汉字字符外还包括希腊字母、日文平假名及片假名字母、俄语西里尔字母等字符,未收录繁体中文汉字和一些生僻字。可以用繁体汉字测试某些系统是不是只支持GB2312编码。

    GB2312的编码范围是0xA1A1-0x7E7E,去掉未定义的区域之后可以理解为实际编码范围是0xA1A1-0xF7FE

    EUC-CN可以理解为GB2312的别名,和GB2312完全相同。

    区位码更应该认为是字符集的定义,定义了所收录的字符和字符位置,而GB2312EUC-CN是实际计算机环境中支持这种字符集的编码。HZISO-2022-CN是对应区位码字符集的另外两种编码,都是用7位编码空间来支持汉字。区位码和GB2312编码的关系有点像 UnicodeUTF-8

    4.GBK编码

    GBK编码是GB2312编码的超集,向下完全兼容GB2312,同时GBK收录了Unicode基本多文种平面中的所有CJK汉字。同 GB2312一样,GBK也支持希腊字母、日文假名字母、俄语字母等字符,但不支持韩语中的表音字符(非汉字字符)。GBK还收录了GB2312不包含的汉字部首符号、竖排标点符号等字符。

    GBK的整体编码范围是为0x8140-0xFEFE,不包括低字节是0×7F的组合。高字节范围是0×81-0xFE,低字节范围是0x40-7E和0x80-0xFE。

    低字节是0x40-0x7E的GBK字符有一定特殊性,因为这些字符占用了ASCII码的位置,这样会给一些系统带来麻烦。

    有些系统中用0x40-0x7E中的字符(如“|”)做特殊符号,在定位这些符号时又没有判断这些符号是不是属于某个 GBK字符的低字节,这样就会造成错误判断。在支持GB2312的环境下就不存在这个问题。需要注意的是支持GBK的环境中小于0x80的某个字节未必就是ASCII符号;另外就是最好选用小于0×40的ASCII符号做一些特殊符号,这样就可以快速定位,且不用担心是某个汉字的另一半。Big5编码中也存在相应问题。

    5 .BIG5编码

    Big5是双字节编码,高字节编码范围是0x81-0xFE,低字节编码范围是0x40-0x7E0xA1-0xFE。和GBK相比,少了低字节是0x80-0xA0的组合。0x8140-0xA0FE是保留区域,用于用户造字区。

    Big5收录的汉字只包括繁体汉字,不包括简体汉字,一些生僻的汉字也没有收录。GBK收录的日文假名字符、俄文字符Big5也没有收录。因为Big5当中收录的字符有限,因此有很多在Big5基础上扩展的编码,如倚天中文系统。Windows系统上使用的代码页CP950也可以理解为是对Big5的扩展,在Big5的基础上增加了7个汉字和一些符号。Big5编码对应的字符集是GBK字符集的子集,也就是说Big5收录的字符是GBK收录字符的一部分,但相同字符的编码不同。

    因为Big5也占用了ASCII的编码空间(低字节所使用的0x40-0x7E),所以Big5编码在一些环境下存在和GBK编码相同的问题,即低字节范围为0x40-0x7E的字符有可能会被误处理,尤其是低字节是0x5C"/")和0x7C"|")的字符。

    尽管有些区别,大多数情况下可以把CP950当作Big5的别名。

    6 .UNICODE编码(文件头:FFFE

    Unicode组织和ISO组织都试图定义一个超大字符集,目的是要涵盖所有语言使用的字符以及其他学科使用的一些特殊符号,这个字符集就是通用字符集(UCSUniversal Character Set)。这两个组织经过协调,虽然在各自发展,但定义的字符位置是完全一致的。ISO相应的标准是ISO 10646UnicodeISO 10646都在不断的发展过程中,所以会有不同的版本号来标明不同的发展阶段,每个Unicode版本号都能找到相对应的ISO 10646版本号。

    ISO 10646标准定义了一个31位的字符集。前两个字节的位置(0x0000-0xFFFD)被称为基本多语言面(Basic Multilingual Plane, BMP),超出两个字节的范围称作辅助语言面。BMP基本包括了所有语言中绝大多数字符,所以只要支持BMP就可以支持绝大多数场合下的应用。Unicode 3.0对应的字符集在BMP范围内。

    UCS字符集为每个字符分配了一个位置,通常用“U”再加上某个字符在UCS中位置的16进制数作为这个字符的UCS表示,例如“U+0041”表示字符“A”。UCS字符U+0000U+00FFISO-8859-1完全一致。

    UCS-2UTF-16UCS字符集(或者说是Unicode字符集)实际应用中的具体编码方式。UCS-2是两个字节的等宽编码,因为只是使用了两个字节的编码空间,所以只能对BMP中的字符做编码。UTF-16是变长编码,用两个字节对BMP内的字符编码,用4个字节对超出BMP范围的辅助平面内的字符作编码。

    UCS-2不同于GBKBig5,它是真正的等宽编码,每个字符都使用两个字节,这个特性在字符串截断和字符数计算时非常方便。

    UTF-16UCS-2的超集,UTF-16编码的两字节编码方式完全和UCS-2相同,也就是说在BMP的框架内UCS-2完全等同与UTF-16。实际情况当中常常把UCS-16当作UCS-2的别名。

    UCS-2UTF-16在存储和传输时会使用两种不同的字节序,分别是big endianlittle endian(大尾和小尾)。例如“啊”(U+554A)用big endian表示就是0x554A,用little endian表示就是0x4A55UCS-2UTF-16默认的字节序是big endian方式。在传输过程中为了说明字节序需要在字节流前加上BOMByte order Mark),0xFEFF表示是big endian0xFFFE表示是little endianUCS-2BEUCS-2LE是实际应用中使用的编码名称,对应着big endianlittle endianUTF-16BEUTF-16LE也是如此。因为默认是BE字节序,所以可以把UCS-2当做是UCS-2BE的别名。

    UCS编码中有一个叫做“ZERO WIDTH NO-BREAK SPACE”的字符,它的编码是U+FEFF,是个没有实际意义的字符。UCS规范建议我们在传输字节流前,先传输字符“ZERO WIDTH NO-BREAK SPACE”,如果传输的ZERO WIDTH NO-BREAK SPACE0xFEFF就说明是big endian,反之就是little endian

    UCS-2UTF-16也可以理解为和ASCII以及ISO-8859-1兼容,在ASCII编码或者ISO-8859-1编码的每个字节前加上0x00,就得到相应字符的UCS-2编码。

    UCS-2UTF-16中会使用0x00作为某个字符编码的一部分,某些系统会把0x00当作字符串结束的标志,在处理UCS-2UTF-16编码时会出现问题。

    7 .UTF-8编码(文件头:EFBBBF

    UTF-8UCS字符集的另一种编码方式,UTF-16的每个单元是两个字节(16位),而UTF-8的每个单元是一个字节(8位)。UTF-16中用一个或两个双字节表示一个字符,UTF-8中用一个至四个单字节表示一个字符, 根据不同的符号而变化字节长度。

    UTF-8的编码规则很简单,只有二条:

    1)       对于单字节的符号,字节的第一位设为0,后面7位为这个符号的Unicode码。因此对于英语字母,UTF-8编码和ASCII码是相同的。

    2)       对于n字节的符号(n>1),第一个字节的前n位都设为1,第n+1位设为0,后面字节的前两位一律设为10。剩下的没有提及的二进制位,全部为这个符号的Unicode码。

    Unicode符号范围 | UTF-8编码方式

    (十六进制) | (二进制)

    -------------------------   +  ---------------------------------------------

    0000 0000-0000 007F |  0xxxxxxx

    0000 0080-0000 07FF |  110xxxxx 10xxxxxx

    0000 0800-0000 FFFF |  1110xxxx 10xxxxxx 10xxxxxx

    0001 0000-0010 FFFF |  11110xxx 10xxxxxx 10xxxxxx 10xxxxxx

    以汉字“严”为例,严”的unicode4E25100111000100101),根据上表,可以发现4E25处在第三行的范围内(0000 0800-0000 FFFF),因此“严”的UTF-8编码需要三个字节,即格式是“1110xxxx 10xxxxxx 10xxxxxx”。然后,从“严”的最后一个二进制位开始,依次从后向前填入格式中的x,多出的位补0。这样就得到了,“严”的UTF-8编码是“11100100 10111000 10100101”,转换成十六进制就是E4B8A5

     

    也可认为UTF-8编码是根据一定规律从UCS-2转换得到的,从UCS-2UTF-8之间有以下转换关系:

    UCS-2            UTF-8

    U+0000 - U+007F   0xxxxxxx

    U+0080 - U+07FF   110xxxxx 10xxxxxx

    U+0800 - U+FFFF   1110xxxx 10xxxxxx 10xxxxxx

    例如“啊”字的UCS-2编码是0x554A,对应的二进制是0101 0101 0100 1010,转成UTF-8编码之后的二进制是1110 0101 10 010101 10 001010,对应的十六进制是0xE5958A

    UCS-4也是一种UCS字符集的编码方式,是使用4个字节的等宽编码,可以用UCS-4来表示BMP之外的辅助面字符。UCS-2中每两个字节前再加上0x0000就得到了BMP字符的UCS-4编码。从UCS-4UTF-8也存在转换关系,根据这种转换关系,UTF-8最多可以使用六个字节来编码UCS-4

     

    根据UTF-8的生成规律和UCS字符集的特性,可以看到UTF-8具有的特性:

    UTF-8完全和ASCII兼容,也就是说ASCII对应的字符在UTF-8中和ASCII编码完全一致。范围在0x00-0x7F之内的字符一定是ASCII字符,不可能是其他字符的一部分。GBKBig5都存在的缺陷在UTF-8中是不存在的。

    大于U+007FUCS字符,在UTF-8编码中至少是两个字节。

    UTF-8中的每个字符编码的首字节总在0x00-0xFD之间(不考虑UCS-4支持的情况,首字节在0x00-0xEF之间)。根据首字节就可以判断之后连续几个字节。

    非首字节的其他字节都在0x80-0xBF之间;0xFE0xFFUTF-8中没有被用到。

    GBK编码中的汉字字符都在UCS-2中的范围都在U+0800 - U+FFFF之间,所以每个GBK编码中的汉字字符的UTF-8编码都是3个字节。但GBK中包含的其他字符的UTF-8编码就不一定是3个字节了,如GBK中的俄文字符。

    UTF-8的编码的传输过程中即使丢掉一个字节,根据编码规律也很容易定位丢掉的位置,不会影响到其他字符。在其他双字节编码中,一旦损失一个字节,就会影响到此字节之后的所有字符。从这点可以看出UTF-8编码非常适合作为传输编码。

    展开全文
  • 常用字符编码

    千次阅读 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开发详解 孙鑫

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

    展开全文
  • 关于各种常用字符编码

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

    由于是本人还是新手,写这篇文章只是为了做个笔记,如有错误之处还请高手们指出

    ascii编码:

    这是最早的一种编码,很多其他的编码都会兼容ascii编码,ascii编码只包含常用的英文字母,数字,以及一些特殊字符,还有部分控制字符。

    每个字符由占用一个字节的存储空间,因为最多只包含127个字符,而一个字节(8bit)最多可以存256(2^8)个字符,故其最高位都为0。

    例如大写英文字母'A'对应的ascii码值为65,用二进制表示就是01000001.


    gb2312编码:

    由于计算机是美国人发明的,在设计编码的时候没有考虑到别国的文字,而ascii编码中是不包含别国的文字的,比如中文。所以想 要在计算机中显示

    我们的中文,就必须制定一套中文编码规范,而gb2312就是其中一种,该编码方式包含常用的中文字符。而且兼容ascii编码,在gb2312编码中,ascii

    字符还是跟原来一样占用一个字节,一个中文字符占用2个字节,ascii字符的码值在0-127之间,中文字符的两个字节的码值都是在127-256之间。


    gbk编码:

    gbk也是一种中文编码,其兼容gb2312编码,并且比gb2312包含了更多的汉字,与gb2312不同的是gbk在存储中文时,第一个字节码值在127-256之间,

    第二个字节的码值在0-256之间,所以gbk能表示更多的汉字。


    utf-8编码:

    utf-8是一种国际化的编码方式,其包含世界各国的大部分文字,并且兼容ascii编码。在utf-8中,用1-6个字节来存储一个字符。具体如何区分某个字符

    占几个字节呢?这就要看字符的第一个字节特征了

    当第一个字节的二进制以‘0’开头时,表示这是个ascii字符,即只占一个字节

    当以'110'开头时,表示这个字符占2个字节,其后的1个字节也属于该字符

    当以'1110'开头时,表示这个字符占3个字节,其后的2个字节也属于该字符,

     当以'11110'开头时,表示这个字符占4个字节,其后的3个字节也属于该字符

    当以'111110'开头时,表示这个字符占5个字节,其后的4个字节也属于该字符

    当以'1111110'开头时,表示这个字符占6个字节,其后的5个字节也属于该字符

    其中大部分的中文在utf8中都占3个字节,即第一个字节以1110开头那一类。


    展开全文
  • 常用字符编码及乱码分析

    千次阅读 2019-08-01 10:58:07
    GBK、GB2312:表示国标编码,GDB包含简体中文和繁体中文,而DB2312只包含简体中文,也就是说,这两种编码都是描述中文的编码 UNICODE编码:Java提供的16进制编码,可以描述世界上任意的文字信息,但是有个问题,若...

    常见的编码

    1. GBK、GB2312:表示国标编码,GDB包含简体中文和繁体中文,而DB2312只包含简体中文,也就是说,这两种编码都是描述中文的编码
    2. UNICODE编码:Java提供的16进制编码,可以描述世界上任意的文字信息,但是有个问题,若现在所有的字母都使用16进制编码,那么这个编码太庞大了,会造成网络传输的负担
    3. ISO8859-1:国际通用编码,但是所有的编码都需要进行转换
    4. UTF编码:相当于结合了UNOICODE、ISO8859-1,也就是需要用到16进制文字使用UNICODE,而若只是字母就使用ISO8859-1,常用的就是UTF- 8

    乱码产生分析

    若本地系统所用的编码和程序所用的编码不同,强制转换就会出现乱码

    public class analyzeMessyCode {
        public static void main(String[] args) throws IOException {
            FileOutputStream fileOut = new FileOutputStream
                    (new File("C:\\Users\\Administrator\\Downloads\\file1.txt"));
            fileOut.write("hello world".getBytes("ISO8859-1"));
            fileOut.close();
        }
    }
    

    乱码产生的原因:编码和解码不统一产生的问题

    展开全文
  • 搞清常用编码特性是解决字符编码问题的基础。字符编码的识别与转换、分析各种乱码产生的原因、编程操作各种编码字符串(例如字符数计算、截断处理)等都需要弄清楚编码的特性。 了解一种字符编码主要是要了解...
  • 拨开字符编码的迷雾--字符编码概述

    万次阅读 2017-11-27 20:46:23
    相信不少人在字符编码上面摔过跟头,这篇文章针对开发中需要了解的字符编码知识进行了简要的讲解,希望能够对大家有所帮助。 1. ASCII及其扩展 1.1 什么是ASCII字符集 字符集就是一系列用于显示的字符的...
  • 计算机字符编码——ASCII码和常用编码 ASCII码 基本介绍 上个世纪60年代, 美国制定了一套字符编码, 对英语字符与二进制位之间的关系, 做了统一规定,这被称为ASCII码。 ASCII码一共规定了128个字符的编码, 比如...
  • 几种常用字符编码

    2019-03-12 11:15:50
    常见的一些字符编码方式无非有:Unicode、ASCII、GBK、GB2312、UTF-8。下面先对常见的这一些字符编码方式作下说明: 1.ASCII码 这是美国在19世纪60年代的时候为了建立英文字符和二进制的关系时制定的编码规范...
  • 拨开字符编码的迷雾--字符编码转换

    万次阅读 2017-11-27 21:22:09
    1. Windows API介绍本文介绍使用Windows API进行字符编码的转换,涉及WideCharToMultiByte和MultiByteToWideChar2个API, API接口名中的MultiByte对应着多字节编码,如ASCII、UTF-8等都是多字节编码,而WideChar...
  • 字符编码

    千次阅读 2020-12-17 22:44:48
    字符编码: ​ 按照某种规则,将字符存储到计算机中,称为编码;反之,将存储在计算机中的二进制数按照某种规则解析显示出来,称为解码。在进行编码和解码过程中,我们必须采用是同一种规则,才能数据正常,否则,会...
  • Java常用字符集编码详解 Web开发的时候经常会遇到一些字符编码的错误,如页面乱码等问题,所以有必要需对字符编码有所了解,以下是Ricki收集的一些资料(可能不是很全,但希望对你有所帮助) Java标准字符集:所谓...
  • 字符编码常用种类介绍

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

    万次阅读 多人点赞 2020-05-04 16:42:33
    每一个程序员都不可避免的遇到字符编码的问题,很多人在字符编码方面同样遇到不少问题,而且一直对各种编码懵懵懂懂、不清不楚。这篇文章就是针对字符编码中的一些问题进行了详细的阐述,能从根本上理解字符编码
  • 字库表、编码字符集、字符编码

    千次阅读 2019-05-09 08:50:14
    1、十分钟搞清字符集和字符编码 2、字符编码与字符集的区别 字库表(character repertoire):相当于一个 所有 可读或者可显示字符的数据库。其决定了编码字符集能够展示的字符的范围。 编码字符集(coded ...
  • 单字节编码: 双字节编码: 多字节编码
  • 本文属于 字符编码系列文章之一,更多请前往 字符编码系列。 题纲 基本概念 欧美的编码 ASCII码 ISO-8859-1编码 中文系列编码 GB2312编码 GBK编码 BIG5编码 GB18030编码 ANSI 编码 Unicode与UCS Unicod...
  • 统一字符编码

    2013-04-21 14:34:42
    包含所有字符编码,可以正常的使用。不包含其他问题。
  • 也谈计算机字符编码 值得收藏 1) 每种ANSI编码或者说ANSI字符集只规定自己国家或地区使用的语言所需的'字符';比如中文GB-2312编码中就不会包含韩国人的文字。 2) ANSI字符集的空间都比ASCII要大很多,一个字节已经...
  • Unicode(统一码、万国码、单一码)是计算机科学领域里的一项业界标准,包括字符集、编码方案等。 UTF-8 UTF-8编码的最大长度是4个字节。从上表可以看出,4字节模板有21个x,即可以容纳21位二进制数字。 使用1-4个...
  • C++与字符集、字符编码

    千次阅读 2019-11-02 10:50:06
    字符编码 字符集与字符编码的关系 多种字符编码存在的意义 字符编码的发展历史 活动代码页 c++的多字节字符与宽字节字符 c++的多字节字符串与宽字节字符串 C++程序输出字符串的编码 字符串常量 参考文章 ...
  • 文章摘要: 字符(Character)是各种文字和符号的总称,包括各国家文字、标点符号、图形符号、数字等。字符集(Character set)是多个字符的集合,字符集种类...字符编码:给每个字符编号的一定规则。ANSI的ASCII编码
  • 字符编码小记

    千次阅读 2016-02-03 14:19:54
    字符编码”分为 字符集 和 编码方案 两个含义。
  • 字符编码查询,包括中文和英文字符编码快速查询工具,
  • 了解一种字符编码主要是要了解该编码编码范围,编码对应的字符集(都包含哪些字符),和其他字符编码之间的关系等。ASCIIASCII码是7位编码编码范围是0x00-0x7F。ASCII字符包括英文字母、阿拉伯数字和
  • java字符集与字符编码 Unicode字符集
  • 字符编码研究

    千次阅读 2015-11-20 23:07:48
    字符编码研究  应用开发中,经常会遇到乱码的问题,对于新手尤其如此。为了原理乱码问题带来的困扰,特整理一下字符编码的原理,从根本上杜绝乱码的出现。 一,相关概念  在计算机的世界中,所有的信息都是由01...
  • 字符串和字符编码

    千次阅读 2019-01-09 17:19:56
    由于计算机是美国人发明的,因此,最早只有127个字符编码到计算机里,也就是大小写英文字母、数字和一些符号,这个编码表被称为ASCII编码,比如大写字母A的编码是65,小写字母z的编码是122。 但是要处理中文显然...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 692,602
精华内容 277,040
关键字:

常用的字符编码包括