python字符编码和文件处理

时间:2021-10-20 16:44:43

一.了解字符编码的知识储备

1.文本编辑器存取文件的原理(nodepad++,python,word)

  • 打开编辑器就打开了启动了一个进程,是在内存中的,所以,用编辑器编写的内容也都是存放于内存中的,断电后数据丢失
  • 要想永远保存,需要点击保存按钮:编辑器把内存的数据刷到硬盘上
  • 在我们编写一个py文件(没有执行),跟编写其他文件没有任何区别,都只是在编写一堆字符而已.

2.python解释器执行py文件的原理,(python,test.py)

  • 第一阶段: python解释器启动,此时就相当于启动了一个文本编辑器
  • 第二阶段:python解释器相当于文本编辑器,去打开test.py文件,从硬盘上将test.py的文件内容读入到内存中
  • 第三阶段:python解释器解释执行刚刚加载到内存中test.py的代码

3.过程:

  文本编辑器°一个文件的三个过程:

  • 先启动文本编辑器
  • 文件编辑器会将文件内容读入内存
  • 将读入内存的内容显示到屏幕上

  CPython解释器执行一个py文件的三个过程:

  • 先启动python解释器
  • python解释器会将py文件的内容当中普通的文本内容读入内存
  • 开始解释执行刚刚读入内存的代码,识别python语法

4.字符编码

  字符编码指的是字符转换成或者编码成数字

  编码的过程一定要遵循一个标准,该标准称之为字符编码表

  • ASCII表:只能识别英文字符,用8bit对应一个英文字符  (一个英文字符===>1Bytes)
  • GBK表:可以识别中文字符/英文字符,用8bit对应一个英文字符,用16bit对应一个中文字符(1个英文字符==>1Bytes/  1个中文字符==>2Bytes)
  • unicode(内存中默认使用该编码) :用2Bytes表示一个字符(特点: 1.可以识别万国字符    2.与各种字符编码的二进制数字都有对应关系)
  • utf-8全称Unicode Transformaation Format: (1个英文字符==>1Bytes        1个中文字符==>3Bytes)

结论:

1.编码与解码

  字符---------编码--------->>数字

  字符<<-------解码-----------数字

  unicode二进制---------编码-------->>utf-8二进制

  unicode二进制<<-------解码----------utf-8二进制

2.内存中固定使用unicode编码,我们可以改变的是数据由内存刷到硬盘时采用的编码    (应该采用utf-8)

  unicode的特点:

      1.可以识别万国字符

      2.与各种字符编码的二进制数字都有对应关系

3.解决乱码问题的核心

     1.字符当初以什么编码存的,就应该以什么编码去读

     2.保证运行python程序的前两个阶段不乱码的解决方案:添加文件头  (在文件首行添加  "#coding: 文件当初存的字符编码)

4.python解释器默认的编码

  python3:      utf-8

  python2:      ASCII