zluxingzhe 2019-11-08
前置知识点: 1、程序执行的三大核心硬件(***): cpu 内存 硬盘 正常执行一个程序的要点: 1、将硬盘中的数据读到内存 2、由cpu读内存中的数据进行执行 3、在执行程序的时候,生成的数据,优先存入内存 2、python解释器执行一个py文件过程(***) 如果没有python解释器,py文件单纯就是一个文本文件 所以说,想执行py文件,必须先执行python解释器 1、将python解释器的代码有硬盘读到内存 2、将py文件以普通文本文件的格式由硬盘读到内存 3、python解释器去内存中读取py文件的数据 4、识别python语法,执行相应的操作 ps:任何一个文本编辑器的执行,前两部都一样 字符编码: 字符:世界上一切语言、文字 有必要考虑,图片文件、音频文件、视频文件? 文件的输入和输出是两个过程 人类输入的内容都是人类自己可以识别的字符 计算机只能识别0101010二进制字符 将人类的字符,存入内存和硬盘,要经历一个过程: 人类的字符 >>>>>>> (字符编码表) >>>> 计算机二进制 0 a 1 b 01 a 10 b 00 c 11 d ASCII码表(美国) 用八位二进制来代表一个英文字符(所有的英文字符+符号一共大概128左右) 0000 0000 1111 1111 最多只能表示255位 八位二进制 = 8 bit 8 bit = 1 bytes 1024bytes = 1KB 1024KB = 1MB 1024MB = 1GB 1024GB = 1TB 1024TB = 1PB GBK(中国) 用2个bytes来代表一个字符,兼容英文字符 0000 0000 0000 0000 1111 1111 1111 1111 最多可以表示65535位 shift(小日子过得不错的日本人) fuck(韩国的) 万国码(unicode) 为了兼容所有的国家的字符,生成unicode 所有的字符都用2bytes 0101 0101 a 0000 0000 0101 0101 a unicode的缺点: 1、占用存储空间 2、io次数增加,程序运行速度变慢(最致命) 在unicode二进制数据存入硬盘的时候,做优化 utf-8: utf-8只与unicode有对应关系 unicode transformation format 所有的英文字符用1个bytes表示 所有的中文字符用3个bytes表示 现在的计算机: 内存都是:unicode 硬盘都是:utf-8 需要掌握: 1、用户无论输入什么字符,存入内存,unicode都可以兼容 2、硬盘中无论是什么编码的文件,读到内存,都可以兼容unicode 乱码的主要原因: 乱码和解码不一致 数据的传输: 优先以自己的本国字符编码进行传递 必须掌握(******) (内存)unicode二进制字符 >>> 编码(encode) >>> (硬盘)utf-8二进制字符 (硬盘)utf-8二进制字符 >>> 解码(decode) >>> (内存)unicode二进制字符 (******) 保证不乱码核心: 用什么编码存的数据,就用什么编码取 ---------------------------------------- python2 : 默认的字符编码ascii码(因为当时的unicode还没盛行) python3: 默认的字符编码utf-8 文件头: # coding:utf-8 用英文字符,是为了让所有的计算机都可以识别 pycharm默认的字符编码是: utf-8 windows操作系统默认字符编码: gbk 最重要的2点的就是 : 保证不乱码的核心是:用什么编码存的数据,就用什么编码取! (内存)Unicode二进制字符>>>>编码(encode)>>>>(硬盘)utf-8 二进制; (硬盘)uft-8二进制>>>>解码(decode)>>>>>内存(Unicode )二进制字符 现在的计算机: 内存都是:unicode 硬盘都是:utf-8