ASCII、Unicode、UTF-8
在计算机中,所有信息最终都能以二进制字符串来表示。二进制位又叫做比特(bit),每个比特有0和1两种状态,8个比特构成了1个字节(byte),1个字节可以表示256种状态。
ASCII
ASCII码一共规定了128个字符的编码,这128个符号(包括32个不能打印出来的控制符号),只占用了一个字节的后7位,最前面的1位统一为0。
Unicode
Unicode是一个容纳了上百万字符的字符集,规定了每个字符的二进制代码。但是没有制定具体的存储规则,例如当用3个字节存储一个字符时,它同时可以被理解为存储了3个ASCII码,另外我们都知道ASCII码是用1个字节存储,当规定用3个字节存储字符时,就造成了空间的极大浪费。
Unicode同时也兼容了ASCII码。
UTF-8
UTF-8是实现了Unicode的方式之一,特点是变长编码,它使用1-4个字节表示一个符号。
编码规则:
- 对于单字节的符号,字节的第一位设为0,后面7位为这个符号的unicode码。因此对于英语字母,UTF-8编码和ASCII码是相同的。
- 对于n字节的符号(n>1),第一个字节的前n位都设为1,第n+1位设为0,后面字节的前两位一律设为10。剩下的没有提及的二进制位,全部为这个符号的unicode码。
总结为下表,x表示字符
Unicode符号范围 | UTF-8编码方式 (十六进制) | (二进制) --------------------+--------------------------------------------- 0000 0000-0000 007F | 0xxxxxxx 0000 0080-0000 07FF | 110xxxxx 10xxxxxx 0000 0800-0000 FFFF | 1110xxxx 10xxxxxx 10xxxxxx 0001 0000-0010 FFFF | 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
例:
“严”字的Unicode编码为100111000100101,用十六进制表示为U+4E25,处在上表的第三行。换成UTF-8则需要3个字节,二进制代码为11100100 10111000 10100101,转换成十六进制为E4B8A5。
相关推荐
89411051 2020-06-14
mjshldcsd 2020-06-14
88540591 2020-06-01
81214051 2020-04-25
84590091 2020-04-22
88384957 2020-03-27
84590091 2020-01-04
88540591 2019-12-26
xiaobaif 2019-12-20
88447005 2019-12-07
88384957 2019-11-09
lpfvip00 2019-11-09
JakobHu 2019-11-09
zluxingzhe 2019-11-08
taiyangshenniao 2019-11-07
meylovezn 2019-11-07
80467305 2019-11-04
butterflyfly00 2019-11-04