07 Python编码问题
17) 编码
18) Python3的执行过程
19) 常见编码错误原因
20) 后附一部分编码详细信息(个人总结,有误望指正)
想了解Python3的编码更细致的讲解请参考大王的文章
http://www.cnblogs.com/alex3714/articles/7550940.html
17,编码
Python2默认的文件编码是,ASCII
所以默认是不支持中文,若想支持中文,要在文件顶行写上
#! -*- coding: utf-8 -*-
#! encoding: utf-8
Python3默认的文件编码是,UTF-8
Windows中文版默认编码是,GBK
Linux / Mac OS默认编码是,UTF-8
18,Python3 的执行过程
1,解释器找到代码文件,把代码字符串按文件头定义的编码加载到内存,转成Unicode
(可以把源文件看成一个很长的字符串)
2,把代码字符串按照语法规则进行语法分析
3,所有的变量字符都会以Unicode编码声明
Note:
Python3的源文件的默认文件编码是UTF-8
Python3解释器的默认编码是Unicode
Python2的源文件的默认文件编码是ASCII
Python2解释器的默认编码是ASCII
在Python3中如果不使用默认编码,记得一定要在文件头声明;在PyCharm改没用
python3中:默认文件编码为UTF-8
加载到内存后成了Unicode
(其实不管声明文件编码为什么,到内存中都会转成Unicode,仅限Python3)
在Windows终端下执行,正常显示
虽然Windows CMD的编码是GBK,
但是Unicode的作用其中之一是有跟全球所有国家语言编码的映射关系
python2中:默认文件编码为ascii
加载到内存后还是ascii,
就算你声明了编码是utf-8,到内存后依然是utf-8,
(声明什么,内存中就是什么) 所以,
在Windows终端下执行,显示不正常
因为Windows CMD的编码是GBK,
GBK处理不了utf-8的编码
只有两种途径才能正常显示:
1,文件头声明编码为gbk
2,字符串显示地转成Unicode
19,常见编码错误的原因:
Python解释器的默认编码
Python源文件的文件编码
Terminal使用的编码
操作系统的语言设置