“rb”,”wb”這兩種方式在操作文件時,直接跳過了系統的編碼方式,在windows系統中,用的編碼為gbk:
①:with open(“a.txt”,”w”) as f1:
F1.write(“aa”)
默認用gbk進行編碼並且寫入。
②: with open(“a.txt”,”r”) as f1:
Print(F1.read())
默認用gbk編碼進行解碼
③: with open(“a.txt”,”wb”) as f1:
F1.write(“aa”.encode(“utf-8”))
跳過了系統的gbk而用的是utf-8進行編碼,這跟”w”不一樣,好像”w”只不過省略了一個步驟即:”aa”.encode(“gbk”),而”wb”只不過對作者要求的更多即:完成了計算機自動完成的步驟。
④:with open(“a.txt”,”rb”) as f1:
Print(f1.read().decode(“utf-8”))
程序員自己手動指定了二進制的解碼方式為utf-8而不是gbk
⑤: with open(“a.txt”,”r”,encoding = “utf-8”) as f1:
Print(f1.read())
此時指定了”r”的編碼方式為utf-8,跟”rb” 有一樣的效果
總結:1、”wb”,”rb”能夠跳過系統自帶的編碼方式
2、是不是,如果是”rb”,那么在print(f1.read())之前已經將二進制轉換為了字符串,所以才會有with open(“a.txt”,”r”,encoding = “utf-8”) as f1 中的encoding.