编码集
1. ASCII编码:
127个字母 8个数据位足够存储字母、数字、符号,支持到0x7F。
2. GB2312编码
每个汉字占据2个字节(高位和低位),16个数据。GB2312是对ASCII的中文扩展,共包含7000多个汉字。是计算机发展到中国后发展起来的编码,检测高位和低位,如果同时大于0x7F,则认为是GB2312,否则认为是ASCII编码。
相关推荐:《Python视频教程》
3. GBK(1995)和GB18030(2005/2000)
每个汉字占据2个字节,由于汉字的数量太大,GB2312不能满足需求。GBK包括了GB2312的所有内容,
同时增加了近20000个新的汉字(包括繁体)和符号 。只要求高位大于0x7F,低位可以小于0x7F,认为是中文。
> 国家标准GB18030-2000《信息交换用汉字编码字符集基本集的补充》是我国继GB2312-1980和
GB13000-1993之后最重要的汉字编码标准,包含多种我国少数民族文字,其中收入汉字70000余个。
4.Unicode编码
> 定长存储, 将所有语言都统一到一套编码集,通常使用2个字节,有的是4个字节。收录很全。
分为17个面,基本面采用2个字节,普通中文子也在基本面中,另外16个面是4个字节。
不兼容ASCII码,即存储的时候,对ASCII码前面补0,导致存储的数据变大。
5. utf-8---变长存储
> 国际标准组织(ISO)制定英文字符使用1个字节,沿用原来的ASCII码。
> 使用1~4个字节表示一个符号,中文存储使用3个字节(ascii码中的内容用1个字节保存\欧洲的字符用2个字节保存\东亚的字符用3个字节保存\特殊符号用4个字节)
> Unicode是内存编码表示方案(规范),而utf-8是如何保存和传输Unicode的方案(实现)
> 优点:虽然内存汇总的数据都是Unicode,但当数据保存到磁盘或者用于网络传输时,使用utf-8会节省更多的流量和硬盘空间。
如何判断几个字节表示一个字符:
每个字节添加识别位,其中高位识别位为4位,低位识别位为2位。判断高位字节开头有几个1,可以确定共有几个字节来表示一个字符。
6. utf-8和Unicode对应关系
utf-8去掉识别位,变成unicode。