zoukankan      html  css  js  c++  java
  • python字符编码和文件处理

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

    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

  • 相关阅读:
    内存管理 初始化(二)bootmem位图分配器建立 及 使用
    生成asm-offset
    内存管理(一)
    mongodb多表查询(附带pymongo实例)
    python3将docx转换成pdf,html文件,pdf转doc文件
    pymongo 目标计算机积极拒绝
    python中常用的推导(字典推导和列表推导)
    python2和python3的编码问题
    scrapy处理需要跟进的url
    flask上传文件时request.files为空的解决办法
  • 原文地址:https://www.cnblogs.com/kp1995/p/10009617.html
Copyright © 2011-2022 走看看