Python 編碼詳細介紹

ascii:字母、數字、特殊字符

  • A:0100 0001
  • B:0100 0010

unicode:萬國碼,包含世界上所有的文字

  • 創建之初
    • A:0000 0000 0100 0001
    • 中:0100 1110 0010 1101
  • 升級
    • A:0000 0000 0000 0000 0000 0000 0100 0001 (32位)
    • 中:0000 0000 0000 0000 0100 1110 0010 1101
    • 資源浪費

對 unicode 升級:utf-8

  • A:0100 0001 (8位)
  • 歐:0000 0010 0100 0001 (16位)
  • 中:1110 0100 1011 1000 1010 1101 (24位)

gb2312:國標,包含字母、數字、特殊字符、中文

  • A:0100 0001
  • 中:1101 0110 1101 0000

注意

  • 編碼之間不能互相識別
  • 網絡傳輸、硬盤存儲,必須是以非 unicode 編碼方式的 0100 0001

Python 3.X

  • str:內存編碼方式爲 unicode
  • bytes:

區別

  • 英文字母
    • str
      • 表現形式:s1 = ‘nancy’
      • 內部編碼方式:unicode
    • bytes
      • 表現形式:b1 = b’nancy’
      • 內部編碼方式:非 unicode
  • 中文
    • str
      • 表現形式:s1 = ‘南肆’
      • 內部編碼方式:unicode
    • bytes
      • 表現形式:b1 = b’\xe5\x8d\x97\xe8\x82\x86’
      • 內部編碼方式:非 unicode

如何使用

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-wkyU2LEw-1587626451051)(http://qiniuyun.iamnancy.top/str2socket2.png)]

如果你想將一部分內容(字符串)寫入文件或通過網絡進行傳輸,必須先轉化成bytes纔可。平時代碼中,使用字符串。

  • str—> bytes:encode 編碼
  • bytes—> str:decode 解碼