名稱
說明ascii
只能存英文和拉丁字元,乙個字元佔乙個位元組,8位。 ascii 碼是不支援中文的,支援中文的第一張表是 gb2312
gb2312
支援中文,收錄了 7445個字元
gbk1.0
支援中文,收錄了 21886個字元
gb18030
收錄了 27484個漢字,及藏文,維吾爾文等少數名族文字
unicode
萬國碼,支援所有國家和地區的編碼,向下相容 gb2312, gbk
utf-32
乙個字元占用4個位元組
utf-16
乙個字元佔2個位元組或2個以上
utf-8
unicode 的擴充套件集,可變長的字元編碼集 (乙個英文用 ascii 來儲存,乙個中文佔3個位元組)
可以簡單的理解為:
1.為了處理英文本元,產生了ascii碼。
2.為了處理中文字元,產生了gb2312。
3.為了處理各國字元,產生了unicode。
4.為了提高unicode儲存和傳輸效能,產生了utf-8,它是unicode的一種實現形式。
注意:
python2.x 預設編碼是 ascii
python3.x 預設編碼是 unicode,所以 python3.x 直接支援中文不需要進行二次處理。
gbk轉換成 utf-8 的流程:
1.通過解碼 (decode) 轉換成 unicode
2.通過編碼 (encode) 轉成成 gbk
亂碼是因為系統編碼與所提供字元的編碼不一致所導致的。所以當我們需要作業系統正確的輸出乙個字元時,除了要知道該字元的字元編碼,也要知道自己系統所使用的字元編碼。
linux 系統大部分使用的是 utf-8 編碼,windoors 系統使用的編碼是 gb2312。
可以通過 chardet 來判斷字元的編碼
安裝步驟:
2. 解壓至安裝目錄
我的電腦為 d:\software\python2.7\lib\site-packages\chardet-3.0.4
3. 開啟 windows 命令列視窗進行安裝
進入原始碼目錄
使用 python setup.py install 安裝
name = '你好'
print(chardet.detect(name))
執行結果:
在py2中
#-*- coding: utf-8 -*-
宣告這句話就是告訴 python2.7 直譯器 (預設acsii編碼方式)解釋的 .py 檔案宣告下面的內容按 utf8 編碼,就是編碼(編碼成位元組串最後轉成0101的形式讓機器去執行)
參考:
python字元編碼
ascii 碼是乙個位元組,通常只能顯示英文本母和數字。unicode碼為了顯示多種語言產生,但是要占用兩個位元組,顯示文字要占用大量空間 utf 8 為了節約空間而生,英文本元只用乙個位元組儲存,中文字元需要三個位元組 character ascii unicode utf 8 a01000000...
python字元編碼
列印python檔案編碼 import sys print sys.getdefaultencoding 中文的乙個字元unicode占用2個位元組。對在於ascii字元占用1個位元組 utf 8中 中文字元佔3個位元組,英文本元占用1個位元組 編碼和轉碼 unicode不能再解碼了 它是基層的 u...
Python字元編碼
在用python程式設計中,字串有兩種表示方法 string 和 u string 為什麼字串要是用這兩種表達方式。不是僅僅用前一種呢?使用type 函式檢視,它們各自是str物件和unicode物件。這兩個物件有什麼差別嗎?還有經經常使用到的encode 和decode 又是幹什麼的呢?都說pyt...