python2解释器在加载.py?文件中的代码时,会对内容进?行行编码(默认ascill),而python3对内容进?行行编码的默认为utf-8。
早期,计算机是美国发明的,普及率不高,一般只是在美国使用,最早的编码结果就是按照美国人的习惯来编码的,对应数字+字母+特殊字符一共也没多少,就形成来最早的编码--ASCII码,直到今天,ASCII码依然深深的影响着我们。
ASCII(AmericaStandardCodeforInformationInterchange,美国标准信息交换代码),ASCII码是基于拉丁字母的一套电脑编码,主要用于显示现代英语和其他西欧语言,其最多只能用8位来表示(一个字节),即:2**8=256 。
最早的计算机编码ASCII码,包含了英文字母(大写、小写)、数字、标点等特殊字符,共128个码位(2**7),但是计算机对7不敏感,所以又加上了一位(2**8),故ASCII码的第一位数字都是0. (另一种说法是:7位够了,但为了后续拓展,就再加了一位)。所以,ASCII码最多只能表示256个符号(后来发展出来的各自编码都是以ASCII码为基础的)。
随着计算机的发展,以及普及率的提高,流行到欧洲和亚洲,这时ASCII码就不合适了。比如,中文汉字有几万个,而ASCII最多也就256个位置,所以ASCII码不行了。这时,不同的国家就提出了用不同的编码来适用于各自的语言环境,如:中国的GBK、GB2312、BIG5、ISO-8859-1等等。这里GBK国标码,前面的ASCII码部分,由于使用两个字节,所以对ASCII码而言,前9位都是0
ASCII码表示的字母A:01000001
GBK国标码表示的字母A:0000000001000001
但是,各国各自使用不同的编码会导致跨国使用的问题,例如,GBK国标码,只能中国用,日本就用不了了。这时,提出了一个万国码---Unicode
unicode一开始设计是每个字符两个字节。设计好了后,发现我国的汉子依然无法进行编码,只能扩充,成为了32位(也就是4个字节)。但是中国汉字虽然有好几万,但是unicode可以表示40多亿,根本用不完,太浪费了,于是提出UTF编码(可变长度编码)。
UTF-8:每个字符最少占8位,每个字符占用的字节数不定,根据文字内容进行具体编码。例如:英文,就一个字节就够了;汉字占3个字节;这时既满足了中文,也满足了节约,也是目前使用频率最高的一种编码。
UFT-16:每个字符最少占16位。
GBK:每个字符占2个字节,16位。
8bit=1byte
1024byte=1KB
1024KB=1MB
1024MB=1GB
1024GB=1TB
1024TB=1PB
1024PB=1EB
1024EB=1ZB
1024ZB=1YB
1024YB=1NB
1024NB=1DB
常用到TB就够了
原文:https://www.cnblogs.com/joetan/p/10802121.html