字符编码和文件操作

一、字符编码

1.前言

字符串类型、文本文件的内容都是由字符组成,但凡涉及到字符的存取,都要考虑字符的编码问题。字符跟视频文件、音频文件等无关。

2.为什么要有字符编码?

  人类在与计算机交互时,用的都是人类能读懂的字符。而计算机的内部只认识01二进制数据,但是,我们现在在计算机上写的各种各样的字符都能够正常显示,是通过字符编码完成的。

  字符编码:它的内部记录着字符和数字之间的对应关系。

3.字符编码的发展史

3.1 一家独大

  计算机最开始是由美国人发明的,他们肯定是想让计算机识别英文字符。

  ASCII码表:内部记录了英文字符和数字之间的关系。使用一个字节代表一个字符,而一个字节等于八位二进制。

  需要记忆的是:

           A—Z: A是65,往后依次+1

           a—z: a是97,往后依次+1

           0—9: 0是48,往后依次+1

  #  字符串的比较:是按照ASCII码表的十进制进行比较的

3.2 群雄割据

  中国人要想使用计算机,就自己开发了一套编码表:GBK码表,它内部记录了英文、中文、数字之间的对应关系。(它是使用一个字节保存英文字符,两个字节保存中文字符)日本使用的是:Shift_JIS表,韩国使用Euc_kr表。

3.3 一统天下

  为了让世界上的所以国家之间能够彼此无障碍的交流,统一使用了编码 unicode(万国码)

  unicode的内部是统一使用两个字节来保存字符的,由于原来的英文字符是由一个字节来保存,而unicode使用了两个字节。因此,浪费了一倍资源。

所以现在使用utf8(unicode的优化版本),英文字符还是由一个字节来保存,但中文字符使用三个字节来保存。

# 补充:utf-8、utf-16、utf-32、utf8mb4(存表情)……

二、字符编码实操

1.如何解决字符乱码问题?

  写代码时使用的是什么编码,打开时就用什么编码打开。

2.python解释器代码的差异

  **-coding:utf-8-**

  # 在python2 中,默认使用的编码是ASCII码。

比如: s = u '你好'

   print s

  # 在Python3中默认使用的是utf8编码

3.编码和解码

  编码:是把其他字符串转为二进制的过程

  str------>0101

  str------>unicode------>0101001

  ASCII---->GBK------>unicode----->utf8

  解码:把二进制转为其他字符串的过程

# 编码
res = s.encode('utf8')
# print(res) # b'hello'  # 二进制 binary  bin()
print(res) # b'hello\xe4\xbd\xa0\xe5\xa5\xbd\xe5\x93\x88'

# 解码
res1 = res.decode('utf8')  # gbk、utf8
print(res1)  # hello你好哈

 

二、文件操作

1.为什么要使用代码操作文件?

  当文件数量比较多时,人工操作就很不方便了,因此借助代码来操作。

2.如何操作文件?

首先: 1.打开文件  2.操作文件(读、写)  3.关闭文件(释放资源)

#  当在路径中出现了斜杠和字母连用时,为了防止产生歧义,在字符串前加一个r。

# 打开文件
f=open('a.txt', 'r', encoding='utf8')

#读取文件
print(f.read())

# 关闭文件
f.close() # 释放资源
# 方式2:打开文件
# with上下文管理器

with open('a.txt', 'r', encoding='utf8') as ffffff:
    print(ffffff.read())
    
# 内部自动关闭close

 

  

 

 

  

 

posted @ 2023-05-23 16:04  Maverick-Lucky  阅读(57)  评论(0)    收藏  举报