编码方式
- 一、ASCII编码
- 二、Unicode 编码
- 三、UTF-8编码
- 四、GB2312编码
- 五、GBK编码
计算机中对数据的存储为二进制形式,但采用什么样的编码方式存储,效率更高。主要编码方式有 ASCII、Unicode、UTF-8等。
英文一般为1个字节,汉字一般为3个字节。
一、ASCII编码
即美国信息交换码,其把数字,英文字母和常用的控制类字符,映射到0-127的数值空间,每个ASCII编码占一个字节【8bits/1byte】。
最高位为0,其他7位为编码位,即2的7次方。
如大写A 对应的ASCII为65,小写的a为97,如下图所示(来源网络)
若是对 字符串hello 进行ASCII码转换为二进制,即拆分对应的单词,如 h 先转换为ASCII码值,104,再对应为二进制值 0110 1000,如下图所示。
二、Unicode 编码
由Unicode字符集和多套代码规则组成,每个字符均对应一个代码点,可表示65536个字符。
字素是最小的有意义的书写单位。
适用于中文、表情包等,1字素 != 1代码点 !=1字节
三、UTF-8编码
其变长编码,对于英文字符,用1个字节表示,对非英文字符,用2-4个字节表示,兼容ASCII编码。UTF-16编码,为变长编码。
UTF-8编码方式 二进制表示,开头1的位数,表示占用的字节数,如下图是所示。
四、GB2312编码
在实际项目开发中,对数据集请求进行编码和解码,其保持一致才能不出现乱码。
GB2312编码要求 高位和低位都要大于127,其可存储6763个汉字。
字符集
使用字符集,其采用分区管理方式,设计94个区,每个区有94个位,共8836个码位。
01-09区 收录除汉字外的682个字符;
10-15区位空白区,没有使用;
16-55区 收录3755个一级汉字,按拼音排序;
56-89区 收录3008个二级汉字,按部首/笔画排序;
88-94区 为空白区,没有使用。
五、GBK编码
对GB2312编码方式扩充,不再要求低位大于127,新增近2W个汉字和符号