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使用的编码

   操作系统的语言设置

 

 

原文地址:https://www.cnblogs.com/hardy9sap/p/10602734.html