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

来源:互联网 发布:js判断css样式display 编辑:程序博客网 时间:2024/06/05 02:01

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.htm和http://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之区别

0 0
原创粉丝点击