基础

进制

  • 二进制:0b开头,例如 0b0000_0001_0000_0000_0000_0000_0000_0000
  • 十六进制:0x开头,例如0xA1
  • 八进制:0开头,例如070

编码

简介

  1. ANSI组织创建ANSCII字符集,8位为一个字节,表示常用的128种英文符号
  2. 国内组织先后创建GB2312/GBK/GB18030字符集用于表示中文,但是与其他编码格式不兼容
  3. 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标准,加入了少数民族字符

作者声明

  • 文章如有问题,欢迎指正!!!