Welcome to MyBlog! This article was writed to take note my study of Python on liaoxuefeng.
字符串和编码
1.比特(bit)和字节(byte)
一个字节就是指0或者1,计算机底层只能识别0和1.
而最早的计算机在设计时,采用8个bit作为一个字节byte
2.ASCII编码
由于计算机是由美国佬发明,所以,最开始只有127个字符被编码进计算机,也就是大小写英文字母、数字、和一些符号,一个字节就够用了。这个编码表就是ASCII编码。
3.GB2312编码
但是如果换到中国,一个字节显然不够用,至少要2个字节,而且不能够和ASCII编码冲突,所以制定了GB2312编码。用来编码中文。
4.Unicode编码
但是,世界上有上百种语言,比如日本的Shift_JIS编码,韩国的Euc-kr编码。各国有各国的标准,最多只能避免与最早出现的ASCII编码产生冲突。但是其他语言编码之间必定会有冲突。
因此,Unicode应运而生了。它把所有语言统一到了一套编码里。防止乱码。
Unicode和ASCII之间的区别:ASCII编码是1个字节,Unicode编码是2个字节。
5.utf-8编码
但是,新的问题又出现了,如果统一Unicode编码,用Unicode编码要比ASCII编码多用一倍的空间,只用英文的人肯定是不同意的啊
所以,utf-8编码出世了。utf-8把Unicode字符根据不同的数字大小编码成1-6个字节,常用的英文字母被编码成1个字节,汉字通常是3个字节,很生僻少用的字符用4-6个字节。
如此,utf-8还有个好处,最原始的ASCII编码可以被看成utf-8编码的一部分。
6.python中的编码和解码
1 | >>> 'ABC'.encode('ascii') |