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) # 李凤娟
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· Vue3状态管理终极指南:Pinia保姆级教程