1.ascill编码的转换关系的方法

# acill编码的转换关系的方法
print(chr(65))
print(ord('a'))

现在所有的电脑都是这样的 --》 内存中unicode取,存用utf8存(硬盘),全世界的人写代码/写文件都是用utf8

内存中为什么不用utf8?utf8和其他国家的代码都没有转换关系,因此内存都要用unicode

用什么编码写,就用什么编码读

2.python解释器(文本编辑器)解释Python代码的流程

1/python解释器相当于文本编辑器,把代码读入python解释器 --》 字符编码 -》 python2默认是ascill,python3默认utf8 --》 上coding头

中文 # gbk编码的中文加

2/识别代码 --》print有意义 --》 语法问题

# coding:gbk  # 告诉python解释器用gbk去完成第一步,读入字符
中文

3/产生结果 --》 跑到终端--》字符编码

终端有一个特性:你的电脑是什么编码,就按照什么编码的来,windows终端是gbk

3.python2和python3的编码区别

python2

python2有两种存储变量的形式,第一种:unicode;第二种:utf8

假设python2用utf8存储x='中文',当你print(x)的时候,终端接收utf8的变量x,但是windows终端编码是gbk,会乱码

假设python2用unicode存储,终端接受的是unicode,此时windows终端编码是utf8还是gbk都不重要,不会乱码

# coding:gbk
lt1 = '中文'  # utf存储的
# lt1 = ['中文']  # []让他不用终端的编码转化,显示01010101001
print lt1  # ['\xe4\xb8\xad\xe6\x96\x87']

lt2 = u'中文'  # u'中文'让他变成unicode  # 早期用python2定义中文,必须得加上u,让他变成unicode存储
# lt2 = [u'中文']
print lt2  # '中文'

python3

python3只有一种存储变量的形式,unicode

python3用unicode存储,终端接收的是unicode,此时windows终端编码是utf8还是gbk都不重要,不会乱码

lt1 = '中文'  # == u'中文'
print(lt1)
02-13 18:23