常用的字符集

注:上面的GBK和GB2312都是双字节等宽编码,如果算上和ASCII兼容所支持的单字节,也可以理解为是单字节和双字节混合的变长编码。

GB18030编码是变长编码,有单字节、双字节和四字节三种方式

超集:A字符集的全部字符编码与B的一样,则B是A的超集,如A字符集有三个符X(1111),Y(1001),Z(1000),B如果是A的超集,则B中必须包括X,Y,Z, 则它们的编码必须一样

UFT-8/16/32之间虽然编码完全相同,但存储方式不同,需要编码转换,非超集关系

Iso-8859* 与ascii也非超集关系;很多字符集都是US7ASCII的严格超集。

GBK是GB2313的超集

ZHS16GBK不是ZHS16CGB231280的超集

  1. ASCII字符集(American Standard Code for Information Interchange):

代码值只是从0-127,即7位表示一个字符,剩下的一位用来做扩展。

HTTP报文的首部,URI等使用的字符集就是ASCII

  1. Latin1: ascii的扩展,8位表示一个字符。

不同地区定制了ascii的最后一位,产生了iso-8859字符家族,其中iso-8859-1是西欧语言,就是Latin1, 是HTML的默认字符集。

  1. Unicode:含全世界的语言符号,常常作为不同编码间相互转码的桥梁。

Unicode使用了4字节二进制数据来为字符编号(不是编码),即最大可容纳2的31次方个字符。但实际是用不了的,约定一部分永远不启用。
字符的Unicode字符编号是确定的,但是在实际传输过程中,由于不同系统平台的设计不一定一致,以及出于节省空间的目的,对Unicode编码的方式有所不同。
Unicode的实现方式称为Unicode转换格式(Unicode Translation Format,简称为 UTF),分UFT-8、UTF-16、UTF-32三种:

1) UTF-8: 是变长码,以8bit作代码单元,即一个字符使用1-4字节来编码

  1. UTF-16: 是变长码,以16bit作代码单元,即一个字符要么是2字节要么是4字节,Java语言内部就使用这种编码,也是普通意义上的Unicode码。
    3)UTF-32: 对所有的Unicode字符均不做变换,直接使用编号存储!只是这种编码方案太浪费存储空间(就连1个字节就可以搞定的英文字符,它都必须使用4个字节),因而尽管使用起来方便(不需要任何转换),却没有得到普及。

  1. 中文字符集:
  1. GB2312简体字集,全称为GB2312(80)字集。是双字节编码的字符集
  2. BIG5是台湾繁体字集
  3. GBK是简繁字集,包括了GB字集、BIG5字集和一些符号

GBK编码是GB2312编码的超集,向下完全兼容 GB2312。同 GB2312一样,GBK也支持希腊字母、日文假名字母、俄语字母等字符,但不支持韩语中的表音字符(非汉字字符)。GBK还收录了GB2312不包含的汉字部首符号、竖排标点符号等字符。
4) GB18030
GB18030是国家制定的一个强制性大字集标准,全称为GB18030-2000,它的推出使汉字集有了一个“大一统”的标准。采用2字节或4字节编码,其二字节编码部分与GBK一致,因此GB18030是GBK的超集。
GB18030编码向下兼容GBK和GB2312,兼容的含义是不仅字符兼容,而且相同字符的编码也相同。GB18030收录了所有Unicode3.1中的字符,包括中国少数民族字符,GBK不支持的韩文字符等等,也可以说是世界大多民族的文字符号都被收录在内。

注:UTF8与国标GB字符集非超集关系

  1. ANSI: 使用2个字节来代表一个字符的各种汉字延伸编码方式,称为ANSI编码。
    在简体中文系统下,ANSI编码代表GB2312编码,在日文操作系统下,ANSI编码代表JIS编码。
     
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值