• 字符编码和文件处理


      字符编码和文件处理:

      一、字符编码:

         (1)  字符编码表:人类的字符转换成数字

          1Bytes=8bit

          1字节等于8个二进制

          ASCII码:只能识别英文字符,1英文字符=8bit

          GBK:能识别汉字与英文,1汉字=两个字节,1个英文字符=一个字节

          unicode:能识别万国字符,1字符=2Bytes=16bit

            两大特点:

              1、能够兼容万国字符

              2、与各个国家的字符编码都有映射关系

          utf-8:是unicode的转换格式,1个英文字符=1Bytes 1个汉字=3Bytes

          重点理论:

              1、编码与解码:

                字符---编码--->unicode的二进制------编码------->GBK的二进制

                GBK的二进制------解码---->unicode的二进制----->解码->字符

              2、解决乱码问题的核心法则:

                字符用什么编码格式编码的,就应该用什么编码格式进行解码

              3、python解释器默认的字符编码

                python2:ASCII

                python3:UTF-8

                通过文件头可以修改python解释器默认使用的字符编码

                在文件首行写:#coding:文件当初存的时候用的字符编码

                针对python2解释器中定义字符串应该:

                  x=u"上"

                对于python3解释器便是x="上"不加u前缀也是存成unicode

                在python3中

                  x='上' # '上'存成了unicode

                  unicode---------encode----->gbk

                  res = x.encode('gbk') #res是gbk格式的二进制,称之为bytes类型

                  gbk(bytes类型)-------------decode------>unicode

                  y = res.decode('gbk') #y就是unicode

              关于字符编码的操作:

                1、编写python文件,首行应该加文件头,#coding:文件存时用的编码

                2、用python2写程序,定义字符串应该加前缀u,如x=u'上'

                3、python3中的字符串都是unicode编码的,python3的字符串encode之后可以得到bytes类型

         (2)为何字符要编码

              人类与计算机打交道用的都是人类的字符,而计算机无法识别人类的字符,只能识别二进制,所以必须将人类的字符编码成计算机识别的二进制数字。  

      二、文件处理

          1、什么是文件:文件是操作系统提供给用户/应用程序的一种虚拟单位,该虚拟单位直接映射的是硬盘空间

          2、为何要处理文件

            用户/应用程序直接操作文件(读/写)就被操作系统转换成具体的硬盘操作,从而实现用户/应用程序将内存中的数据永久保存到硬盘中

          3、如何用文件

            1、文件处理的三个步骤:

            (1)f.open(r'c.txt',mode='r',encoding='utf-8')  #文件对象(应用程序的内存资源)---》操作系统打开的文件(操作系统的内存资源)

            (2)data = f.read()

            (3)f.close() #向操作系统发送信号,让操作系统关闭打开的文件,从而回收操作系统的资源

            2、上下文管理(常用的文件处理格式)

            with open(r'c.txt'',mode='r',encoding='utf-8') as f,open(r'b.txt',mode='r',encoding='utf-8') as f:

              #读写文件的操作:

              #pass

            文件的打开模式:r(默认的) w  a

            操作文件内容的模式:

            t(默认的):操作文件内容都是以字符串为单位,会自动帮我们解码,必须制定encoding参数

            b:操作文件内容都是以Bytes(二进制)为单位,硬盘中存的是什么就取出什么,一定不能指定encoding参数

            循环读文件内容的方法:

            with open(r'c.txt',mode='r',encoding='utf-8') as f:

              for line in f:

                print(line,end='')

            总结:t模式只能用于文件本文件,而b模式可以用于任意文件

            

          

  • 相关阅读:
    java发送http的get、post请求
    spring boot注解 --@EnableAsync 异步调用
    java代码将e.printStackTrace()写入log4j文件异常信息
    Mybatis 传入List类型参数,报错:There is no getter for property named '__frch_item_0' in
    mongodb 只查询一个字段
    如何在java List中进行模糊查询
    java操作Mongodb
    java操作mongodb时,对象bean和DBObject相互转换的方法
    java 字符串,字符数组,list间的转化
    ldconfig 让安装的 php 的rdkafka生效
  • 原文地址:https://www.cnblogs.com/xiaocaiyang/p/9676638.html
Copyright © 2020-2023  润新知