encode decode 跟文件读写相关的
encode:编码:就是将字符串转换为字节码(二进制)。编码:软件指定编码方式,告诉操作系统按照什么样的编码方式对字符串进行编码,然后存放到文件中保存。
decode:解码:将字节码(二进制)转换为字符串。解码:软件读取文件,告诉操作系统按照什么样的编码方式对文件里的字节进行解码,然后将字符串交给软件。
读文件的时候操作系统帮我们解码,写文件的时候操作系统帮我们编码写到磁盘。
以什么编码方式进行,如果软件代码没有指定,则使用操作系统默认的,否则使用软件指定encoding参数。
Windows操作系统默认编码是GBK
Linux和Mac操作系统默认编码是UTF-8

"w"方式写文件
with open("lfj-默认.txt", "w") as f: f.write("李凤娟") with open("lfj-utf8.txt", "w", encoding='utf-8') as f: f.write("李凤娟")





"wb"方式写文件, 以wb或rb操作文件的时候,就是告诉操作系统不要进行编解码了,直接存,我读写的就是字节码,直接存取
with open("lfj-b-默认.txt", "wb") as f: f.write("李凤娟".encode())#str.encode(encoding='utf-8', errors='strict'),python里encode()默认编码是utf-8 with open("lfj-b-gbk.txt", "wb") as f: f.write("李凤娟".encode("GBK"))


"r"读文件
以默认的编码方式读取文件,我使用的是Windonws系统,Windows系统默认的编码是GBK,这里采用GBK的方式读取一个UTF-8编码的文件,出现错误
with open("lfj-utf8.txt", "r") as f: data = f.read() print(data)

加上编码方式就正确读取了
with open("lfj-utf8.txt", "r", encoding='utf-8') as f: data = f.read() print(data) # 李凤娟
以Windows系统默认编码读取gbk的文件,成功读取
with open("lfj-b-gbk.txt", "r") as f: data = f.read() print(data) # 李凤娟
"rb"读取
以rb或者wb读写文件的时候,不能指定encoding参数


with open("lfj-utf8.txt", "rb") as f: data = f.read() print(data) # b'\xe6\x9d\x8e\xe5\x87\xa4\xe5\xa8\x9f' str1 = data.decode(encoding='utf-8') print(str1) # 李凤娟 str1 = data.decode() print(str1) # 李凤娟 with open("lfj-b-gbk.txt", "rb") as f: data = f.read() print(data) # b'\xc0\xee\xb7\xef\xbe\xea' str1 = data.decode(encoding='GBK') print(str1) # 李凤娟

浙公网安备 33010602011771号