一、程序执行的三大核心硬件:CPU、内存、硬盘python
二、正常执行一个程序流程:优化
一、将硬盘中数据读取到内存编码
二、CPU从内存中读取数据,执行3d
三、软件运行中产生的数据优先存到内存,若要永久保存,则需由内存写入硬盘code
三、python解释器执行一个py文件过程orm
一、启动python解释器blog
二、将py文件从硬盘读到内存内存
三、python解释器从内存中读py文件utf-8
四、识别py文件中python语法,执行相应操做unicode
字符:世界上一切语言、文字
文件的输入和输出是两个过程
人类输入的内容都是人类本身能够识别的字符,计算机只能识别0101010二进制字符
将人类的字符,存入内存和硬盘,要经历一个过程:
***人类的字符 >>>>>>> (字符编码表) >>>> 计算机二进制
发展史
1.一家独大
美国,ASCII码,一个英文对应一个bytes,一个bytes等于八个bit(二进制字节)
2.天下三分
各国拥有本身本国语言的编码表
中国 ,GBK,一个英文对应一个bytes,一个中文对应2个bytes
日本,shift......
三、分久必合
(万国码)unicode
为了兼容全部的国家的字符,生成unicode,全部的字符都用2bytes
一、占用存储空间
二、io次数增长,程序运行速度变慢(最致命)
utf-8
在unicode二进制数据存入硬盘的时候,作了优化
utf-8:
utf-8只与unicode有对应关系
unicode transformation format
全部的英文字符用1个bytes表示
全部的中文字符用3个bytes表示
如今的计算机:
内存都是:unicode
硬盘都是:utf-8
内存和硬盘兼容unicode:
一、不管存入什么字符到内存,unicode均可以兼容
二、硬盘中不管是什么编码文件,读到内存中,均可以兼容unicode
数据的传输:
优先以本身本国的字符编码进行传递
内存、硬盘的编码转换:
(内存)unicode二进制字符 >>> 编码(encode) >>> (硬盘)utf-8二进制字符
(硬盘)utf-8二进制字符 >>> 解码(decode) >>> (内存)unicode二进制字符
保证不乱码的核心:
用什么字符编码存,用什么字符编码取
文件头:
python2 :
默认的字符编码ASCII码(由于当时的unicode还没盛行),因此pycharm写的代码都是utf-8的在python2中必定要写文件头
python3:
默认的字符编码utf-8
pycharm默认的字符编码是:utf-8
中文Windows系统默认的字符编码是:GBK