1. 程式人生 > 實用技巧 >python3中的編碼轉換與檔案操作

python3中的編碼轉換與檔案操作

參考文章:

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不對, 開啟內容是亂碼