python編程筆記--字符編碼
阿新 • • 發佈:2018-12-03
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 執行代碼的過程:
- 解釋器找到代碼文件,把代碼字符串按文件頭定義的編碼加載到內存,轉成unicode
- 把代碼字符串按照語法規則進行解釋,
- 所有的變量字符都會以unicode編碼聲明
常見編碼錯誤的原因有:
- Python解釋器的默認編碼
- Python源文件文件編碼
- Terminal使用的編碼
- 操作系統的語言設置
python編程筆記--字符編碼