几个基本字符集(转自网络)

ASCII 

參考:http://zh.wikipedia.org/wiki/ASCII

American Standard Code for Information Interchange,美国信息交换标准代码

用一个字节表示128个字符。当中不可显示字符33个.33个字符中有一些是已经废除的控制字符。

另外就是95个可显示字符。

128个字符显然不够用。仅仅能支持26个英文字母,阿拉伯数字和标点符号。

详细字符表參考上面的wiki地址。

注意,一个字节最多能够表示256个字符。可是ASCII并没有使用最高位。因此7位仅仅能表示128个字符。

ISO/IEC 8859-1 

參考:http://zh.wikipedia.org/wiki/ISO/IEC_8859-1

既然ASCII有高位不用,这么浪费。8859-1又称Latin-1字符集在ASCII后面空置的0xA0-0xFF的范围内,增加96个字母符号,藉以供使用附加符号拉丁字母语言使用。

这个字符集仍然不能支持全世界的语言文字。

GB2312

參考:http://zh.wikipedia.org/wiki/Gb2312

GB 2312 是中国国家标准中文简体字符集,全称《信息交换用汉字编码字符集·基本集》,又稱GB0


GB 2312标准共收录6763个汉字,当中一级汉字3755个,二级汉字3008个。同一时候收录了包含拉丁字母希腊字母日文平假名片假名字母、俄语西里尔字母在内的682个字符。

GB2312并不能支持全部罕见字,因此又有后来的GB系列字符集。

2312字符集单位是区,每一个区包括94个字符或者汉字.一共同拥有94个区。

  • 01-09区为特殊符号,包含字母和数字。
  • 16-55区为一级汉字,按拼音排序。
  • 56-87区为二级汉字,按部首/笔画排序。

10-15区及88-94区没实用。

汉字在2312中用两个字节表示。高位字节是区的编号+0xA0,低位字节是该区的汉字所在编号+0xA0。比方'啊'字,在2312的16区第一个。

因此两个字节表示为:0xB0=0xA0+16,0xA1=0xA0+1 也就是:0xB0A1.

这样的加上0xA0的编码方法叫做EUC.參考:http://zh.wikipedia.org/wiki/EUC

完整字符集表參考:http://www.knowsky.com/resource/gb2312tbl.htm

注意,总是两个字节表示字符。比方A的相应编码是0xA3C0.

这些在2312字符集中的字符都是全角。


Unicode

unicode(统一码)用来表示全世界全部文字。而且仍然在不断发展。參考:http://baike.baidu.com/view/40801.htmhttp://zh.wikipedia.org/zh-cn/Unicode

编码方式:

Unicode用数字0-0x10FFFF来映射这些字符。最多能够容纳1114112个字符。

实现方式:

我个人的理解是,用哪个整数代表某个字符是Unicode规范说了算。可是这个整数怎样在内存中存储,在网络上传输,能够有不同的实现方式。举例来说:utf-8编码就是用1-4个字节来表示整数的一种变长实现方式,能够节省存储空间和网络传送的数据量。

Unicode的实现方式不同于编码方式。

一个字符的Unicode编码是确定的。

可是在实际传输过程中,因为不同系统平台的设计不一定一致,以及出于节省空间的目的,对Unicode编码的实现方式有所不同。Unicode的实现方式称为Unicode转换格式(Unicode Transformation Format,简称为UTF)

UTF-8节省空间,是1到4个字节的变长存储方式。參考:http://zh.wikipedia.org/wiki/UTF-8

UTF-16固定为两字节表示,可是依据字节顺序的不同,又有UTF-16 BE和LE之差别

posted @ 2016-03-22 14:36  zfyouxi  阅读(623)  评论(0编辑  收藏  举报