一、字符编码
计算机基础知识:应用程序任何操作硬件的请求都需要想操作系统发起系统调用,然后由操作系统去操作硬件
人与人沟通需要使用的语言是人类能听懂的中文、英文等等。但是人与计算机沟通,就必须要使用计算机能听懂的语言,计算机只认识数字,所以为了人类能读懂计算机语言,并且计算机能读懂人类的语言,所以必须经过一个过程: 字符——》翻译过程——》数字
这个过程就是一个字符如何对应一个特定数字的标准,这个标准就是字符编码
二、文本编辑器存取文件的原理(pycharm、word、nodepad++)
1、打开编辑器就是在内存中启动了一个进程,因此,用编辑器写的内容就是存放在内存中的,只要断电数据就消失
2、当点击保存按钮时,编辑器就把内存的数据刷到了硬盘上,这就是永久保存数据的过程
3、在我们编写py文件时,不去执行这个py文件,就跟编写其他文件没有任何区别,都是在编写一堆字符而已
三、python解释器执行py文件的原理
第一阶段:启动python解释器,此时就相当于启动了一个文本编辑器
第二阶段:python解释器相当于文本编辑器,python解释器会从硬盘上将test.py的当做普通文件读入内存(pyth的解释型决定了解释器只关心文件内容,不关心文件后缀名)
第三阶段:python解释器解释执行刚刚加载到内存中的test.py的代码,开始识别pyth语法
四、总结python解释器与文本编辑器的异同
1、相同点:python解释器是解释执行文件内容的,因此python解释器具备了读py文件的功能,这一点与文本编辑器一样
2、不同点:文本编辑器试讲文本读入内存后,方便显示或者编辑,不需要理会python的语法,但是python解释器将文件内容读入内存之后,还需要执行python代码,识别python语法
五、涉及到字符编码的问题
1、一个python文件中的内容是由一堆字符组成的,存取都涉及到字符编码问题(python文件并未执行,前两个阶段属于这一范畴)
2、python中的数据类型字符串是由一堆字符组成的(第三阶段)
六、字符编码的发展史和分类(了解)
ASCII码最多只能表示256个字符
七、字符吗的发展阶段可分为三个阶段
1、现代计算机起源于美国。最早诞生也是基于英文考虑的ASCII
2、为了满足中文和英文,中国人定制了GBK
3、多语言混合的文本中,显示会有乱码,为了结局这个问题,需要同时满足:
a、能够兼容万国字符
b、与全世界所有的字符编码都有映射关系,这样就能转换成任意国家的字符编码
总结:内存中统一采用Unicode,浪费空间来换取可以转换成任意编码,硬盘可以采用各种编码,如utf-8,保证存放于硬盘或者基于网络传输的数据量很小,提高传输效率与稳定性。
八、乱码分析
1、存文件时就已经发生乱码
2、存文件时没有乱码,读文件时发生了乱码
总结:1、保证不乱码的核心法则就是,字符按照什么标准而编码的,就按什么标准解码,此处的标准就是字符编码
2、在内存中写的所有字符,都是Unicode编码。
Unicode格式(内存)——》encode(保存文件)——》utf-8格式(硬盘)
utf-8格式(硬盘)——》decode(读文件)——》Unicode格式(内存)
补充:浏览网页时,服务器会把动态生成的Unicode内容转换成utf-8再传输到浏览器
如果服务端encode的编码格式是utf-8,客户端内存中收到的也是utf-8编码的结果
九、字符编码应用之python
强调:
阶段一:启动python解释器
阶段二:python解释器此时就是一个文本编辑器,负责打开文件test.py,即从硬盘中读取test.py的内容到内存中
阶段三:读取已经加载到内存的代码(Unicode编码格式),然后执行,执行过程中可能会开辟新的内存空间