字符编码与文件处理

字符编码

  只跟文本文件和字符串相关,与视频文件、图片文件、音频文件等无关

  1、什么是字符编码

    由于计算机内部只识别二进制,但是用户在使用计算机的时候确可以看到各式各样的语言字符。

    字符编码:内部记录了人类字符与数字对应关系的数据

  2、字符编码的发展史

    2.1、阶段一:一家独大

      现在计算机起源于美国,所以最先考虑的仅仅是让计算机识别英文字符,,于是诞生了ASCII表

      ASCII表里面记录了英文字符于数字的对应关系;一个英文字符对应一个字节,1Bytes=8bit,8bit最多包含256个数字,可以对应256个字符,足够表示所有的英文字符

字符编码与文件处理

 

     2.2、阶段二:群雄割据

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

# GBK表的特点:
    1、只有中文字符、英文字符与数字的一一对应关系
    2、一个英文字符对应1Bytes
       一个中文字符对应2Bytes   
       补充说明:
       1Bytes=8bit,8bit最多包含256个数字,可以对应256个字符,足够表示所有英文字符
       2Bytes=16bit,16bit最多包含65536个数字,可以对应65536个字符,足够表示所有中文字符

      每个国家为了让计算机能够识别自己国家的字符外加英文字符,各个国家都制定了自己的字符编码表

# Shift_JIS表的特点:
    1、只有日文字符、英文字符与数字的一一对应关系
 
# Euc-kr表的特点:
    1、只有韩文字符、英文字符与数字的一一对应关系

    2.3、天下一统

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

      1994年发布了unicode(万国码)。统一使用两个及以上字符记录字符与数字的对应关系

      由于unicode固定使用两个字节来存储一个字符,如果多国字符中包含大量的英文字符时,使用unicode格式存放会额外占用一倍空间(英文字符其实只需要用一个字节存放即可),然而空间占用并不是最致命的问题,最致命地是当我们由内存写入硬盘时会额外耗费一倍的时间,所以将内存中的unicode二进制写入硬盘或者基于网络传输时必须将其转换成一种精简的格式,这种格式即UTF-8(全称Unicode Transformation Format,即unicode的转换格式)

      内存中使用unicode,硬盘使用UTF-8

# 多国字符—√—》内存(unicode格式的二进制)——√—》硬盘(utf-8格式的二进制)

  3、字符编码实操

    3.1、如何解决文件乱码的情况

      文件当初用什么编码编写的,打开的时候就用什么编码打开

    3.2、python解释器版本不同带来的编码差异

      在python2.x内部使用的编码默认是ASCII,,使用时需要在文件头加coding:utf8;并且在定义字符串前面加一个小u。

字符编码与文件处理

 

     在python3.x中内部使用utf8

    3.3、编码与解码

    编码:将人类能够读懂的字符按照指定的编码转换成数字

    解码:将数字按照指定的编码转换成人类能够读懂的字符

字符编码与文件处理

 

 字符编码与文件处理

 

 文件操作

  1、什么是文件

    文件其实是操作系统暴漏给用户操作硬盘的快捷方式(接口)

  2、代码如何操作文件

    关键字:open()

    三步走:

      1、利用关键字open打开文件

      2、利用其他方式操作文件

      3、关闭文件

  3、路径

    相对路径:参考对象是根目录

    绝对路径:参考对象是当前目录

    路径中出现了字母与斜杠的组合产生了特殊含义时,只需要在路径字符前加一个r就可以了

# open('a.txt')
# open(r'D:\py\a.txt')

  4、open使用

    open(文件路径,读写模式,字符编码);其中文件路径与读写模式是必须的,字符编码是可选的,有些模式需要编码)

字符编码与文件处理

 

   with上下文件管理(能够自动帮你close())

 

  

  

上一篇:UTF-8和Unicode


下一篇:mysql中utf8和utf8mb4区别