版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/king_qg/article/details/85995699
字符编码
ASCII
标准ASCII
一个字节的低7位存储数据,最高位用作奇偶检验位。
扩展ASCII
一个字节全部用来存储数据。
Unicode
Unicode不是编码,而是字符集,字符集为每个“字符”都规定了一个码点(二进制的序列)。
目的
为了统一所有文字的编码。
UTF-8
是对Unicode的的编码规则,而且长度是可变的。
编码规则
占用字节 | 编码 | … | … | … | … | … |
---|---|---|---|---|---|---|
1 | 0xxxxxxx | |||||
2 | 110xxxxx | 10xxxxxx | ||||
3 | 1110xxxx | 10xxxxxx | 10xxxxxx | 10xxxxxx | ||
4 | 11110xxx | 10xxxxxx | 10xxxxxx | 10xxxxxx | ||
5 | 111110xx | 10xxxxxx | 10xxxxxx | 10xxxxxx | 10xxxxxx | |
6 | 1111110x | 10xxxxxx | 10xxxxxx | 10xxxxxx | 10xxxxxx | 10xxxxxx |
- 编码后只需要用一个字节,那么最高位为0。
- 编码后需要不只一个字节,第一个字节从最高位统计1连续的个数,数目代表了多少个字节。
UTF-8编码最多使用6个字节,根据编码规则,表述数据的部分有31位。
UTF-8演示
- 严的Unicode码点为0x4E25
- 二进制需要15位表述数据,UTF-8需要3个字节
- 编码后就是1110xxxx 10xxxxxx 10xxxxxx
- 用码点的数据替换上述的x
- 得到1110100 10111000 10100101
特点
- 变长
- 无需考虑字节序
关于作者
大四学生一枚,分析数据结构,面试题,golang,C语言等知识。QQ交流群:521625004。微信公众号:后台技术栈。