字符集
ASCII
ASC编码是现今最通用的 单字节 编码系统,包含英文字母、数字、特殊字符等。
它的最高位称作奇偶校验位,用来校验传输过程中编码是否出现错误。
- 奇校验 字节中1的个数为奇数,如果不是则最高位置1
- 偶校验 字节中1的个数为偶数,如果不是则最高位置1
每个地区都可能有不同的字符需要编码成二进制串,所以为了提供一个统一的字符集,让全世界都无障碍使用,unicode诞生了,它为每一个字符都提供一个独一无二的二进制串。
Unicode
Unicode为 每种语言 中的 每个字符 设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。
Unicode仅仅规定了每个字符码位,并没有规定如何存储、传输它们。因此出现了许多编码规则,用于unicode编码的传输、存储,最常见的就是UTF-8与GBK。
编码
UTF-8
UTF-8是基于Unicode最通用的国际编码。每个字符长度为 一个字节 – 四个字节。英文字母为1个字节,汉字为3个字节。支持大小端。
编码格式为:
0xxxxxxx # 0000-007F
110xxxxx 10xxxxxx # 0080-07FF
1110xxxx 10xxxxxx 10xxxxxx # 0800-FFFF
11110xxx 10xxxxxx 10xxxxxx 10xxxxxx # 10000-1FFFF
GBK
GBK也是基于Unicode的编码,是中国编码,固定每个字符长度为 两个字节,英文字母与汉字以最高位区分。
1xxxxxxx xxxxxxxx # 汉字
0xxxxxxx xxxxxxxx # 字符
显然,GBK与UTF8之间需要通过Unicode来进行转换。