目录
字符编码
字符是储存了信息的载体,是给人看的
编码是一堆二进制数,是给机器看的
字符编码就是将人类的字符编码成计算机能识别的数字,这种转换必须遵循一套固定的标准,该标准无非是人类字符与数字的对应关系,称之为字符编码表。
文本编辑器存储信息的过程
文本编辑器 --》写文本 --》存储信息
显示屏(内存) --》(转换)硬盘
Unicode及utf8
Unicode可以认识万国编码,无论什么格式的编码,都可以识别
但是Unicode比较占内存,可以再次转化为utf8码。utf8只认识Unicode,只能用Unicode读它。
取用Unicode取,存用utf8存。
gb2312和gbk的区别
gb2312是最开始用的中国编码,只有常用字符
后来转变为gbk,基本中国字符都有
编码和解码
unicode编码 --》(编码)utf8从内存到硬盘
utf8 --》 (解码)Unicode 从硬盘到内存
现在内存只有Unicode编码
Python解释器(文本编辑器)解释python代码的流程
python解释器相当于文本编辑器,把代码读入python解释器 --》 字符编码 -- 》 python2 默认是ascii,python3默认utf8 -- 》 上coding头
中文 # gbk编码的中文
识别代码 --》 print有意义 --》 语法问题
# coding:gbk # 告诉python解释器用gbk去完成第一步,读入字符中文
产生结果 --》跑到终端 --》 字符编码
python解释器启动应用程序的流程
- 把字符读入python解释器(文本编辑器) --》 识别字符编码
- 识别字符(识别语法和关键字) --》 报错
- 往终端打印结果 --》 字符编码
Python2和Python3编码的区别
Python2
python2中有两种储存变量的形式,第一种:Unicode;第二种:按照coding头来的。
假设python2用utf8存储x='中文'
,当你print(x)
的时候,终端接收gbk的变量x,但是windows终端编码是utf8,会乱码。
假设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,widonws终端编码是utf还是gbk不重要,不会乱码
lt1 = '中文' # == u'中文'(python2)
print(lt1)