字符编码和文件处理

Posted zhangzhechun

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了字符编码和文件处理相关的知识,希望对你有一定的参考价值。

一、字符编码

计算机基础知识:应用程序任何操作硬件的请求都需要想操作系统发起系统调用,然后由操作系统去操作硬件

人与人沟通需要使用的语言是人类能听懂的中文、英文等等。但是人与计算机沟通,就必须要使用计算机能听懂的语言,计算机只认识数字,所以为了人类能读懂计算机语言,并且计算机能读懂人类的语言,所以必须经过一个过程:  字符——》翻译过程——》数字

这个过程就是一个字符如何对应一个特定数字的标准,这个标准就是字符编码

二、文本编辑器存取文件的原理(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编码格式),然后执行,执行过程中可能会开辟新的内存空间

 

以上是关于字符编码和文件处理的主要内容,如果未能解决你的问题,请参考以下文章

字符编码文件处理

字符编码和文件处理

python 基础之字符编码和文件处理

7.5字符编码及文件处理

day10 字符编码和文件处理

python字符编码文件处理函数