字符编码

字符编码

前置知识

1、程序执行的三大核心硬件:CPU、内存、硬盘

2、正常执行一个程序流程:

​ 1、将硬盘中数据读取到内存

​ 2、CPU从内存中读取数据,执行

​ 3、软件运行中产生的数据优先存到内存,若要永久保存,则需由内存写入硬盘

3、python解释器执行一个py文件过程

​ 1、启动python解释器

​ 2、将py文件从硬盘读到内存

​ 3、python解释器从内存中读py文件

​ 4、识别py文件中python语法,执行相应操作

字符编码

字符:世界上一切语言、文字

文件的输入和输出是两个过程

人类输入的内容都是人类自己可以识别的字符,计算机只能识别0101010二进制字符

将人类的字符,存入内存和硬盘,要经历一个过程:

***人类的字符 >>>>>>> (字符编码表) >>>> 计算机二进制

发展史

1.一家独大

美国,ASCII码,一个英文对应一个bytes,一个bytes等于八个bit(二进制字节)

2.天下三分

各国拥有自己本国语言的编码表

中国 ,GBK,一个英文对应一个bytes,一个中文对应2个bytes

日本,shift......
3、分久必合

(万国码)unicode

为了兼容所有的国家的字符,生成unicode,所有的字符都用2bytes

1、占用存储空间
2、io次数增加,程序运行速度变慢(最致命)

utf-8

在unicode二进制数据存入硬盘的时候,做了优化

utf-8:
utf-8只与unicode有对应关系
unicode transformation format

所有的英文字符用1个bytes表示
所有的中文字符用3个bytes表示

现在的计算机:
内存都是:unicode
硬盘都是:utf-8

内存和硬盘兼容unicode:

1、无论存入什么字符到内存,unicode都可以兼容

2、硬盘中无论是什么编码文件,读到内存中,都可以兼容unicode

数据的传输:

​ 优先以自己本国的字符编码进行传递

内存、硬盘的编码转换:

(内存)unicode二进制字符 >>> 编码(encode) >>> (硬盘)utf-8二进制字符

(硬盘)utf-8二进制字符 >>> 解码(decode) >>> (内存)unicode二进制字符

保证不乱码的核心:

用什么字符编码存,用什么字符编码取

文件头:

coding : utf-8

python2 :
默认的字符编码ASCII码(因为当时的unicode还没盛行),所以pycharm写的代码都是utf-8的在python2中一定要写文件头
python3:
默认的字符编码utf-8

pycharm默认的字符编码是:utf-8

中文Windows系统默认的字符编码是:GBK

posted @ 2019-11-07 17:19  Mr沈  阅读(455)  评论(0编辑  收藏  举报