1. 程式人生 > >python編程筆記--字符編碼

python編程筆記--字符編碼

standard align 升級 clas python解釋器 系統 節省空間 聲明 ica

ASCII碼、Unicode、utf-8

ASCII(American Standard Code for Information Interchange,美國標準信息交換代碼)是基於拉丁字母的一套電腦編碼系統,主要用於顯示現代英語和其他西歐語言,其最多只能用8位來表示(一個字節),即:2**8 = 256-1,所以,ASCII碼最多只能表示255個符號。

Unicode(統一碼、萬國碼、單一碼)是一種在計算機上使用的字符編碼。Unicode是為了解決傳統的字符編碼方案的局限而產生的,它為每種語言中的每個字符設定了統一並且唯一的二進制編碼,規定雖有的字符和符號最少由16位來表示(2個字節),即:2 **16 = 65536,


註:此處說的的是最少2個字節,可能更多

Unicode的特點:

  • 直接支持全球所有語言,每個國家都可以不用再使用自己之前的舊編碼了,用unicode就可以了。(就跟英語是全球統一語言一樣)
  • unicode包含了跟全球所有國家編碼的映射關系
  • 使用unicode表示一個字符,太浪費空間

UTF-8,是對Unicode編碼的壓縮和優化,他不再使用最少使用2個字節,而是將所有的字符和符號進行分類:使用1、2、3、4個字節表示所有字符;優先使用1個字符、無法滿足則使增加一個字節,最多4個字節。英文占1個字節、歐洲語系占2個、東亞占3個,其它及特殊字符占4個。總之,UTF是為unicode編碼設計的一種在存儲和傳輸時節省空間的編碼方案。

各個字符編碼:

  • ASCII 占1個字節,只支持英文
  • GB2312 占2個字節,支持6700+漢字
  • GBK GB2312的升級版,支持21000+漢字
  • Shift-JIS 日本字符
  • ks_c_5601-1987 韓國編碼
  • TIS-620 泰國編碼
  • Unicode 2-4字節已經收錄136690個字符,並還在一直不斷擴張中...

python3中字符編碼

  •    py3有兩種數據類型:str和bytes; str類型存unicode數據,bytse類型存bytes數據(註:無論以什麽編碼在內存裏顯示字符,存到硬盤上都是2進制
  •   py2默認ASCII碼,py3默認的utf8
  •   在py3中encode,在轉碼的同時還會把string 變成bytes類型,decode在解碼的同時還會把bytes變回string

python3 執行代碼的過程:

  1. 解釋器找到代碼文件,把代碼字符串按文件頭定義的編碼加載到內存,轉成unicode
  2. 把代碼字符串按照語法規則進行解釋,
  3. 所有的變量字符都會以unicode編碼聲明

常見編碼錯誤的原因有:

  • Python解釋器的默認編碼
  • Python源文件文件編碼
  • Terminal使用的編碼
  • 操作系統的語言設置

python編程筆記--字符編碼