从ASCII、ANSI、Unicode一直到utf,编码的演变过程是怎样的呢?废话不多说,我们直入正题,了解各种编码的优、缺点吧!
1. 字符集和编码
0、1 <=> 101011001 <=> 二进制转十进制 <=> 值
电脑如何进行存储文字信息:
10110100 <=> a
ASCII => 编排了128个文字符号,只需要7个0和1就可以表示了. 01110100 => 1 byte =>8bit (想了解python中ASCII的使用规则,详见:用python得到自定长度的验证码-CSDN博客)
ANSI => 美国的一套标准,每个字符16 bit,即2 byte => 有65536种排列方式
到了中国,形成gb2312编码,又改成bgk编码(现在使用的,Windows默认)
到了日本,形成JIS编码
Unicode:万国码
早期Unicode没有意识到中国的汉字种类庞大,UCS-2 只有2个字节(byte)
后来进行扩充,UCS-4 4个字节:00101001 00010101 11011110 01100110
utf:是可变长度的Unicode,可以进行数据的传输和存储
utf-8:最短的字节长度8(程序员常用的一种编码方式)
英文:8bit,1byte
欧洲文字:16bit,2byte
中文:24bit,3byte
utf-16:最短的字节长度是16
2. bytes
程序员平时遇见的所有的数据最终的数据单位都是字节(byte)
str.encode("编码类型") # 编码
bytes.decode("编码类型") #解码