day08、字符编码、编码和解码、python2和python3的区别

字符编码

字符编码是将人类的字符编码成计算机能识别的数字,这种转换必须遵循一套固定的标准,该标准无非是人类字符与数字的对应关系,称之为字符编码表。

在初期,英语国家发明了计算机,因此最初的字符编码是有英文对应的ASCII码;

但是后来,各个国家都要使用计算机,但是本国的文字没有对应的字符编码表,因此日本、韩国等国家都推出了自己的编码表,中国人规定了自己的标准GB2312编码,规定了包含中文在内的字符与数字的对应关系。

但是这样就出现了各个国家之间通信交流出现乱码的现象,这时候就出现了Unicode编码,Unicode可以认识万国编码,硬盘中无论存着什么格式的编码文件,Unicode都可以识别,解决了乱码的问题,用Unicode存都用Unicode取,又用Unicode存,以后写代码只能写Unicode,以后全世界的代码都是Unicode;但是Unicode存在存储时多占用空间的问题,所以出现了UTF-8编码(只和Unicode对应),就解决了Unicode多占用内存的问题。

现在所有的电脑都是这样的,内存中unicode取,存用UTF-存(硬盘),全世界的人写代码/写文件都是用utf8;内存中为什么不用utf8?utf8和gb2312/fuck都没有转换关系,因此内存都要用unicode;未来迟早有一天,内存要用utf8

中国后来推出了GBK编码规范,原先的GB2312是只有常用词,而GBK则包含了所有字,windows系统的记事本默认编码是GBK,除此之外都是UTF-8

编码和解码

unicode编码 ---》(编码) utf8 从内存到硬盘

utf8 --》(解码) unicode 从硬盘到内存

现在内存只有unicode编码

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

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

中文 # gbk编码的中文加

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

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

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

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

代码出了编码错误,首先加 #coding:utf8

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

python2和python3的编码区别

python2

python2有两种存储变量的形式,第一种:unicode;第二种:按照coding头来的

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

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

python3

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

python3用unicode存储,终端接收的是unicode,widonws终端编码是utf还是gbk不重要,不会乱码

![03 字符编码](D:\slk\OldBoy\正课\day08\03 字符编码.png)

posted on 2019-09-17 16:47  shenblogs  阅读(167)  评论(0)    收藏  举报

导航