基础
进制
- 二进制:0b开头,例如 0b0000_0001_0000_0000_0000_0000_0000_0000
- 十六进制:0x开头,例如0xA1
- 八进制:0开头,例如070
编码
简介
- ANSI组织创建ANSCII字符集,8位为一个字节,表示常用的128种英文符号
- 国内组织先后创建GB2312/GBK/GB18030字符集用于表示中文,但是与其他编码格式不兼容
- ISO组织创建Unicode字符集与编码规则,用来统一全世界所有字符,但是没有得到推广
- 互联网的兴起,面向数据传输的UTF-8编码规则的出现,使得Unicode编码规则得到广泛使用
- UTF-8编码规则是Unicode字符集的具体实现
- UTF-8采用可变长编码方式,采用1~ 4字节进行编码,其中英文采用1字节编码、中文采用3字节编码。
- 现代编程中,推荐使用UTF-8编码规则
字符集与编码规则
- 字符集:字符与码点一一对应(1:1),负责字符与码点的映射
- 编码规则:码点<-编码规则->字符,就是编码解码的过程,负责编码解码
Ascii
- ASCII是字符集,8位为一个字节,表示常用的128种英文符号(包括字母与符号)
Unicode
- Unicode是字符集,包含全世界所有的字符,全世界所有字符统一占用2个字节
- 支持原有的ASCII字符集位于第2字节处,因此Unicode字符集代表英文会浪费1个字节
- 广义的Unicode是1个标准,它包含Unicode字符集和UTF-8、UTF-8mb4、UTF-16、UTF-32等编码规则
UTF-8
- UTF-8是Unicode的编码规则,网络传输时以8位为1个传输单元,数据存储时以8位为1个存储单元
- 支持1~4个字节存储字符,英文使用1个字节存储,中文使用3个字节存储
- 动态的合适的字节长度编码有利于在网络传输时节省带宽,有利于在数据存储时节省存储空间
- 现代编码过程中推荐使用UTF-8编码
- 注意:UTF-8与MySQL中的utf8不同,前者1到4字节,后者1到3字节,MySQL为了存储表情符号推出了utfmb4(more bytes 4)
UTF-16
- UTF-16是Unicode的编码规则,网络传输时以16位为1个传输单元,数据存储时以16位为1个存储单元
UTF-32
- UTF-32是Unicode的编码规则,网络传输时以32位为1个传输单元,数据存储时以32位为1个存储单元
GB2312
- GB2312是中文编码规则,占用2个字节,是对ASCII字符集的中文扩充。
- 原来127号以下的ASCII字符被保留称之为半角字符,大于127号以后的字符包括大约7000个简体中文字符、中文标点符号称为全角字符
GBK
- GBK是中文编码规则,是对GB2312字符集的扩充。占用2个字节
- GB2312扩展到GBK标准,加入了不常用的中文字符和繁体字
GBK18030
- GBK18030是中文编码规则,是对GBK字符集的扩充。占用2/4个字节,GBK无法表示的汉字使用4字节表示
- GBK扩展到GBK18030标准,加入了少数民族字符
作者声明
- 文章如有问题,欢迎指正!!!