ANSI 多字节编码
计算机采用高电平和低电平分别表示1和0,因此数据的存储和运算用二进制表示,因此需要编码来指定哪些二进制表示哪个符号,因此出现 ASCLL。
ASCLL:单字节编码方案,指定7位(便准ASCLL码)或8位(扩展ASCLL码)组合来表示128或256种可能的字符。
标准ASCLL(0x00 ~ 0x7F):7位二进制数表示127位,最高位作奇偶校验,用来检验是否出现错误。
奇校验:一个字节中的1必须为奇,如果不是,则最高位填充1。
偶校验:一个字节中的1必须为偶,如果不是,则最高位填充1。
扩展ASCLL (0x80 ~ 0xFF):8位二进制数表示256位,扩展ASCLL码增加一些欧洲国家使用的特殊符号。
所有国家其前面 0 -127 相同,128 - 255 段可能不同国家的编码不一样,因为每个国家都用同一扩展部分表示自己的符号。
对于亚洲国家的文字,符号太多以至扩展的ASCLL码也无法表示全部字符,因此出现多字节编码,如简体中文的 GB2312,用两个字符表示一个汉字。
Unicode 系列编码
Unicode 百度百科
QT学习笔记(1)—字符编码
Unicode and Character Sets
Unicode web site
Byte Order Mark (BOM)
Unicode and You
不同地方对同一字段采用表示不同的的字符,因此有冲突,国际组织制定 Unicode 编码,也称国际码,对全球语言统一分配编码区间,解决不同语言的冲突。
Unicode 编码系统,分为编码方式和实现方式。
编码方式: Unicode用数字0-0x10FFFF来映射字符,最多可以容纳1114112个字符,或者说有1114112个码位。码位就是可以分配给字符的数字。
UTF-8、UTF-16、UTF-32都是将数字转换到程序数据的编码方案。
Unicode字符集可以简写为UCS(Unicode Character Set)。
早期的Unicode标准有UCS-2、UCS-4的说法。UCS-2用两个字节编码,UCS-4用4个字节编码。
实现方式:
UTF-8
以字节为单位对 Unicode 进行编码,针对不同范围的字符使用不同长度的编码:
UTF-8 编码无字节序问题:
为什么UTF-8没有字节序问题?
大端和小端字节序介绍:
Understanding Big and Little Endian Byte Order