--声明此文章源于老男孩教育 Python解释器在加载.py文件中间的代码,会对内容进行编码(默认ASCII)。 ASCII(American Standard Code for Information Interchange,美国标准信息交换代码)是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语与西欧语言,最多只能用8位来表示(一个字节),即2^8=256-1,所以ASCII最多只能表示255个字符。 关于中文 为了处理汉字,程序员设计了用于简体中文的GB2312和用于繁体的中文的big5。 GB2312(1980年)一共收录7445个字符,包括6763个汉字和682个其它符号。汉子区的内码范围高字节从B0-F7,低字节从A1-FE,占用的码位是72*94=6769.其中有5个空位是D7FA-D7FE。 GB2312支持的汉字太少。1995年的汉字扩展规范GBK1.0收录了21886个符号,它分为汉字区和图形符号区,汉字区包括21003个字符。2000年的GB18030是取代GBK1.0的正是国家标准。该标准收录了27484个汉字,同时还收录了藏文、蒙文、维吾尔文等主要的少数民族文字。现在的PC平台必须支持GB18030,对嵌入式产品暂不作要求。所以对手机、mp3一般支持GB2312。 从ASCII、GB2312、GBK到GB18030,这些编码方法是向下兼容的,即同一个字符在这些方案中总数有相同的编码,后面的支持更多的字符。在这些编码中英文和中文可以统一处理。区分中文编码的方法是高字节的最高位不为0。按照程序员的称呼,GB2312、GBK到GB18030都属于双字节字符集(DBCS)。 有的中文Windows的缺省内码还是GBK,可以通过GB18030升级包升级到GB18030。不过GB18030相对GBK增加的字符,通常人是很难用到的,通常我们还是用GBK指代中文Windows内码。 显然ASCII码无法将世界的各种文字和符号全部表示,所以,就需要新出一种可以代表所有字符和符号的编码,即Unicode Unicode(统一码、万国码、单一码)是一种在计算机上使用的字符编码,Unicode是为解决传统的字符编码方案的局限而产生,他为每一种语言的每一个字符设定了同意并且唯一的二进制编码,规定虽有的字符和符号最少由16位来表示(2个字节),即:2**16=65536, 注:此处说的是最少2个字节,可能更多UTF-8,是对Unicode编码的压缩和优化,他不再使用最少2个字节,而是将所有的字符和符号进行分类ASCII码的内容用1个字节保存、欧洲的字符用2个字节保存,东亚的字符用3个字节保存。 所以。Python解释器在加载.py文件中的代码时,会对内容进行默认编码。
| |
转载于:https://www.cnblogs.com/hhxz/p/8977089.html