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)