计算机只能处理数字,如果想要处理字符,必须转换成数字,所以就需要对字符进行编码。
计算机是美国人发明的,最早只有127个字符被编码到计算机里,这就是ASCII编码,包含英文字母、数字和一些特殊字符。
但是ASCII码不能处理中文,所以中国制定了GB2312把中文编码进去,可想而知,其他国家也制定了对应语言的编码。
各国标准不一样,多语言的文本会出现冲突,为了解决这个问题,Unicode编码应运而生,它把所有的语言统一编码。
ASCII码采用一个字节编码,Unicode是两个字节,以字符A为例:
字符 | ASCII | Unicode |
A | 01000001 | 00000000 01000001 |
如果ASCII编码的字符用Unicode编码,只需要在前面补0即可,这样的话就会出现一个问题,如果文本中大部分是英文字母,用Unicode编码会比ASCII编码多占用几乎一倍的存储空间。
于是又出现了“可变长”的UTF-8编码,根据Unicode字符所需不同长度,编码成1-6个字节,英文是1个字节,汉子是3个字节,如果文本中大量使用英文字母,UTF-8可以节省空间。
字符 | ASCII | Unicode | UTF-8 |
A | 01000001 | 00000000 01000001 | 01000001 |
中 | 01001110 00101101 | 11100100 10111000 10101101 |
参考:
https://www.liaoxuefeng.com/wiki/1016959663602400/1017075323632896