字符编码和文件操作
一、字符编码
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
浙公网安备 33010602011771号