day08
字符编码
文本编辑器存储信息的过程
文本编辑器--写文本--存储信息
显示屏(内存)--(转换)硬盘
ASCII码的转换关系
print (chr(65))
print(ord('a'))
Unicode存储占用太多空间,出现了Utf-8(和Unicode--对应)解决了Unicode内存占用
现在电脑都是内存中Unicode取,存用utf-8存
为什么内存中不用Utf-8和gb2312都没有转换关系,所以内存要用Unicode
gb2312和gbk的区别
gb2312是中国早期的编码,其中为常用词
gbk是后期完善的,包含了中文的所有字
用什么编码写,就用什么编码读,否则会出现乱码
编码和解码
Unicode编码--(编码)utf8从内存到硬盘
utf8--(解码)Unicode从硬盘到内存
现在内存只有Unicode编码
python解释器(文本编译器)解释python代码的流程
1.python解释器相当于文本编译器,先把代码读入python解释器--字符编码 上coding
2.识别代码--print有意义--语法问题
3.产生结果 -- 跑到终端 --字符编码
终端有一个特性:电脑是什么编码,就会按照什么编码来,windows终端是gbk
python2和python3的编码区别
python2
python有两种存储变量的形式,第一种:Unicode第二种:按照coding头来的
python2默认用ASCII读取字符
假设python2用utf8有存储x=‘中文’,当你print(x)的时候,终端接收gbk的变量x,但是windous终端编码是utf8,会乱码
假设python2用Unicode存储,终端接受的是Unicode,windows终端编码不管是什么都不会乱码
# 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存储,不管终端编码是什么,都不会乱码
lt1 = '中文' # == u'中文'
print(lt1)