字符编码与文件处理

一、字符编码

    1.什么是字符编码

      由于计算机内部只能识别二进制,但是用户在使用计算机的时候却可以看到各式各样的语言字符,就是通过字符编码来进行翻译的。

      字符编码的本质就是内部记录了人类字符与数字相对应的关系的数据。

    2.字符编码发展史  

      2.1 一家独大

        计算机一开始是由美国人发明的,美国人为了让计算机能够理解英文字符于是发明了ASCII码,里面记录了英文字符与数字的对应关系

        特点:

          1.只有英文字符与数字一一对应

          2.一个英文字符对应一个1bytes,1bytes = 8 bit,8bit最多包含256个数字,可以对应256个字符,足够表示所有的英文字符。

      2.2 群雄割据

        为了让计算机能够识别中文和英文,中国人定制了GBK

        特点:

          1.只有中文字符和英文字符与数字一一对应关系

          2.一个中文字符对应两个bytes或者三个bytes

        为了让计算机能够识别日文和中文,日本人定制了shift_JIS码,韩国人定制了Euc_kr码

        特点:

          分别记录了日文英文与数字的对应关系和韩文英文与数字的对应关系

      2.3分久必合

        为了实现不同国家之间的文本数据能够彼此无障碍交流需要对编码统一

        1994年发明了unicode(万国码)

          统一使用两个及以上字节记录字符与数字的对应关系

        后来又进行了优化,又了utf8

          英文还是还是用一个字节存储,将中文使用三个字节或更多字节存储

 

 

 二、字符编码的应用

    1.unicode的作用

      内存中固定unicode输入任何字符都不会发生乱码

    2.关于乱码问题

      2.1保证存的时候不乱:

        在由内存写入硬盘时,必须将编码格式设置为所输入字符的编码格式

      2.1保证读的时候不乱:

        在由硬盘读入内存是,必须采用与写入硬盘时相同的编码格式

    3.python解释器版本不同带来的差异

      3.1 在python2的版本中,内部使用的编码默认是ASCII

      如果我们想使用utf8进行编码必须在文件头加上 #conding:uft8

      在定义的字符串前加一个u

          s = u’hello‘  

      3.2 在python3中默认编码是utf8

    4.字符编码实操

      4.1编码(将字符转换成计算机认识的二进制数据)

s = '哈利路亚'
res = s.encode('utf8')
print(res, type(res))

      4.2解码(将二进制数据转换成字符)

s = b'\xe5\x93\x88\xe5\x88\xa9\xe8\xb7\xaf\xe4\xba\x9a'
res = s.decode('utf8')
print(res)

 

 

      

三、文件操作

    1.什么是文件?

      文件就是操作系统暴露给用户可以快捷操作硬盘的“接口”

    2.代码如何操作文件

      分为三步

      2.1 利用关键字open()打开文件

      2.2 利用其他方法操作文件

      2.3 关闭文件

    # 在我们打开文件路径的时候,有时候路径中会出现字母与斜杠(\)的组合产生特殊含义,这时候我们可以在路径字符串前加一个r,例如r'D:\py20\day08\a.txt'可以避免此类情况发生 

 

 

 

 

四、文件读写模式

      语法结构with open ('文件路径', '某种读写模式',encoding = 'utf8')as 变量名:

      能够帮您自动close

      可以使用pass补全语法结构,没有实际含义

 

    1. r 只读模式(只能看不能写)

      当路径不存在时,会直接报错

 

 

      

      当路径存在时会读取文件内所有内容

 

 

       

 

    2.w 只写模式(只能写不能看)

      当文件路径不存在时,会自动创建

 

 

      当路径存在时,会先清空文件内容,在执行写入操作

 

 

 

 

 

    3.a只追加模式(追加内容)

      当路径不存在时会创建一个

 

       当路径存在时,不会删除原来的内容,会在末尾追加数据进去

 

 

 

 

 

 

    

posted @ 2021-11-10 16:28  椰子皮0oo0  阅读(100)  评论(0)    收藏  举报
1