编码方式学习
ASHII编码——American Standard Code for Information Interchange(美国标准信息交换码)
定义:一种编码格式,规定了字符如何在计算机中用二进制数字表示;标准的单字节字符编码方案,用于基于文本的数据。
属性:是编码;不是存储,没有对应的文件格式
空间占用:每个ASCII字符占用1个字节(8bit)
现状:只占用一个字节的后面7位,最前面一位统一规定为0
ANSI编码——American National Standards Institute(美国国家标准学会)
定义:对ASCII编码的拓展,用0x00-0x7f的一个字节表示一个英文字符;0x80-0xFFFF的2个字节表示一个字符;不同国家和地区制定不同的标准
属性:编码;也是存储(windows可以直接按照ANSI存储)
占用空间:2个字节(16bit)
现状:仅在前128个字符与ASCII相同,之后的字符全是某个国家的所有字符
优缺点:除前128字符,其他字符会出现乱码
GBK、GB2312编码——汉字内码拓展规范
定义:在GB2312-80标准基础上的内码拓展规范,使用双字节编码方案,23940个码位,21003个汉字,支持中日韩及BIG5中所有汉字。
属性:编码;不是存储(存储依赖ANSI)
占用空间:2字节
现状:对应汉字的编号方式,不能国际通用
存储方式:没有特殊头部信息,汉字占2个字节,字符占1字节
Unicode编码——Universal Character Set(通用字符集)
定义:有ISO制定的ISO10646标准所定义的标准字符集,110万码空间
属性:编码;存储
码点:一个字符集一般可以用一张或多张由多个行和多个列所构成的二维表来表示
二维表中行与列相交的点称为码点,也称为码位
除开非字符码点和保留码点,码点值就是对应字符的编号
编码空间:字符集中所有码点数量的总和
码点范围:最初两个字节,现在拓展为三个子集及以上的十六进制数字表示
按照一定的类别划分0-16共17个平面,每个平面有65536个码点
因此编码空间为17*65536=1114112
占用空间:对于BMP部分,占用两字节,另外部分占用大于2字节
存储方式:FFFE表示小头序存储,FEFF表示大头序存储
UTF-8——Unicode Transformation Format(Unicode可变长度字符)
属性:编码;存储
占用空间:变长,1-4个字节
对于单字节符号,字节第一位设为0,后面7位和Unicode码相同
对于n字节符号,第一字节的前n位设为1,n+1设为0,后面字节的前两位设为10,剩下的二进制位与Unicode码相同
存储方式:三个字节的头,标示UTF-8文件格式,汉字一般为3字节,字符一定是1字节