字符编码ANSI、ASCII、GB2312、GBK、GB18030、UNICODE、UTF-8小结

      编码和解码可以理解成二进制和字符(广义的字符,包括汉字等)的映射表,编码即从字符映射至二进制,解码则为逆过程。



1.英语字符编码ASCII


   开始计算机只在美国用。8字节一共可以组合出256(2的8次方)种不同的状态。美国人把其中的编号从0开始的32种状态分别规定了特殊的用途,一但终端、打印机遇上约定好的这些字节被传过来时,就要做一些约定的动作。遇上00x10, 终端就换行,遇上0x07, 终端就向人们嘟嘟叫,例好遇上0x1b, 打印机就打印反白的字,或者终端就用彩色显示字母。他们看到这样很好,于是就把这些0x20以下的字节状态称为"控制码"。

  他们又把所有的空格、标点符号、数字、大小写字母分别用连续的字节状态表示,一直编到了第127号,这样计算机就可以用不同字节来存储英语的文字了。大家看到这样,都感觉很好,于是大家都把这个方案叫做 ANSI 的"ASCII"编码(American Standard Code for Information Interchange,美国信息互换标准代码)。当时世界上所有的计算机都用同样的ASCII方案来保存英文文字。

    随着世界各地的都开始使用计算机,但是很多国家用的不是英文,他们的字母里有许多是ASCII里没有的,为了可以在计算机保存他们的文字,他们决定采用127号之后的空位来表示这些新的字母、符号,还加入了很多画表格时需要用下到的横线、竖线、交叉等形状,一直把序号编到了最后一个状态255。从128到255这一页的字符集被称"扩展字符集"。

    简而言之,ASCII码一共规定了128个字符的编码,比如空格“SPACE”是32(二进制00100000),大写的字母A是65(二进制01000001)。这128个符号(包括32个不能打印出来的控制符号),只占用了一个字节的后面7位,最前面的1位统一规定为0。



2.中文编码GB2312、GBK、GB18030


     GB2312:GB2312 是对 ASCII 的中文扩展。中国人得到计算机时,已经没有可以利用的字节状态来表示汉字,况且有6000多个常用汉字需要编码。我们规定:一个小于127的字符的意义与原来相同(同ASCII),但两个大于127的字节连在一起时,就表示一个汉字,其中高字节范围规定为从0xA1—0xF7,低字节范围规定为从0xA1—0xFE。这套编码中,不仅包括了7000多个常用简体汉字,还包括数学符号、罗马希腊字母、日文假名。 ASCII 里本来就有的数字、标点、字母都统统重新编了两个字节长的编码,即所谓的"全角"字符,而原来在127号以下的那些就叫"半角"字符了。GB2312使用两个字节表示一个汉字,所以理论上最多可以表示256x256=65536个符号。

     GBK 标准:由于中国仍旧有许多偏僻字无法表示。后来规定:只要第一个字节是大于127就固定表示这是一个汉字的开始,不管后面跟的是不是扩展字符集里的内容。即形成GBK标准,GBK 包括了 GB2312 的所有编码,同时又增加了近20000个新的汉字(包括繁体字)和符号。GBK标准包括拉丁字母、汉字、日文、韩文、俄文,不包括俄语、葡萄牙语。

     GB18030标准:扩展至少数民族字母符号。

      这一系列标准称为 "DBCS"(Double Byte Charecter Set 双字节字符集)。其最大的特点是2字节长的汉字字符和1字节长的英文字符并存于同一套编码方案里。以前的程序程序为了支持中文处理,必须要注意字串里的每一个字节的值,如果这个值是大于127的,那么就认为一个双字节字符集里的字符出现了。注意,G

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值