037 Python2和Python3字符编码的区别

Python2 和 Python3字符编码的区别

1.python解释器运行代码的流程

1.启动python解释器(相当于文本编辑器)

2.打开文件,从硬盘把文件的内容读取到内存(涉及字符编码)

3.解释从硬盘中获取的内容(就会生成变量就开辟内存空间存放变量,把变量存放在内存中,涉及字符编码)

python2默认用的是ascii读取字符,python3默认是utf8读取字符

2.python2的运行流程

unicode + 指定的coding编码(str类型)

# coding:gbk
a = '中文'  # 用gbk编码存储了这堆0和1
a = u'中文'  # 用unicode编码存储了这堆0和1
print(a)

终端是一个文本编辑器,会有默认编码.

假设终端的默认编码是gbk , 认识 gbk编码的变量

假设终端的默认编码是utf8, 不认识 gbk编码的变量

3.python3的运行流程

我们看到的其实是unicode

但是终端帮你把这个unicode的0和1做一个转换,从unicode转换成了终端能够识别的编码格式,然后变成中文

# coding:gbk
a = '中文'  # 用unicode编码存储了这堆0和1
print(a)  # 010101010

假设终端的默认编码是gbk , 认识 unicode编码的变量

假设终端的默认编码是utf8,认识 unicode编码的变量

4.区别

在第三步的时候python2和python3有区别

  • python2

会用unicode编码存放变量; 还会用文件默认的编码存放变量

假设文件默认的编码是gbk,生成的变量就会用gbk形式存储变量,终端默认编码也是gbk,没有问题

假设文件默认的编码是gbk,生成的变量就会用gbk形式存储变量,终端默认编码也是utf8,有问题 *

  • python3

就用unicode的编码存放变量 a = 1当我们打印a的时候,本来应该打印出0和1,但是终端会按照他的编码规则吧0和1转成人类认识的字符#

用什么编码存,就用什么编码取

上一篇:Python环境搭建


下一篇:第1章:Python语言与Linux系统管理