python3中的編碼轉換與檔案操作
阿新 • • 發佈:2020-11-23
參考文章:
Python 中的編碼轉化與檔案操作(一) - 知乎 (zhihu.com)
通過 Unicode 編碼來進行不同編碼之間的相互轉化
1、不同的編碼之間不能互相識別,不能相互轉化,會報錯或出現亂碼
2、國際通用標準:文字通過網路傳輸、或硬碟儲存等不能使用 Unicode 編碼方式,因為 Unicode 使用的是升級版 32 位的,太費流量和空間
3、在 Python3 版本中,唯獨 string 在記憶體中的編碼方式是 Unicode,所以字串不能直接進行網路傳輸及進行檔案的儲存
4、bytes:也是一種資料型別,不是位元組,與 string 型別就像是孿生兄弟
5、為啥要有 bytes ?—— bytes 內部編碼不是 Unicode 方式,因此可以進行網路傳輸和檔案的儲存
6、不同編碼之間相互轉化都需要先變成unicode編碼, encode編碼, decode解碼
示例:
s1 = "中國" b=s1.encode("gbk") s2 = b.decode("gbk") s3=u"中國" print(s1) print(b) print(s2) print(s1==s2==s3) 結果 : 中國 b'\xd6\xd0\xb9\xfa' 中國 True
在python3版本中, 字串的編碼方式就是Unicode, 所以中國==u"中國"
各系統的預設編碼方式
WINDOWS: GBK
LINUX: UTF-8
IOS: UTF-8
示例:
# windows下生成的檔案開啟方式 with open(r"d:\test.txt") as fp: print(fp.read()) # linux下生成檔案的開啟方式 with open(r"d:\test.txt", encoding="utf-8") as fp: print(fp.read())
如果encoding不對, 開啟內容是亂碼