字符集与编码
字符集:考虑如何将字符映射成数字ID,不考虑传输和存储,只考虑每一个字符都对应唯一的数字
编码规则:考虑如何对目标进行编码,需要考虑传输和编码单位。
ASCII码
ASCII((American Standard Code for Information Interchange): 美国信息交换标准代码)码是最初美国国家标准,供不同计算机在相互通信时用作共同遵守的西文字符编码标准。由于他出现的早,所以即是字符映射规则,也是计算机使用字符时的传输和存储规则。所以即是字符集又是编码规则。规定8个二进制位为1字节。ASCII码长8位其中第一位为0所以其余7位可以表示2^7=128个字符。
Unicode码
unicode码是由ISO组织提出,对世界上所有语言字符建立的编码,世界上每一个字符都对应唯一的一个固定长的8位十六进制编码(称为Code Point)。所以是一个字符集。
UTF-8码
由于unicode码所有常用和罕见字符均采用定长编码,所以一些字符可能出现大量补0的情况。于是utf-8编码出现了,它以8位为一个编码单位/传输单位,采用1~4个字节的可变长的规则(英文1字节、中文3字节,utf-8通过编码数字指定了一个字符用多少字节,方便计算机使用)对字符进行编码。其中常用字符的编码更短,罕见字符的编码更长,已达到节省存储空间的目的。是一种对于计算机的编码规则。
GBK/GB2312/GB18030
针对中文常用汉字(GB2312)、繁体字与字符(GBK)、多民族字符(GB18030)的字符进行的编码规则(向下兼容),适用于汉字。为什么有了UTF-8,GBK等规则还会频繁出现使用呢?因为它对于中文字符一般会更节省空间(中文2字符)。