ASCII是美國信息交換標准代碼,是標准的單字節編碼(8位)。unicode是計算機科學領域的業界標准,2字節(16位)。
GBK稱漢字內碼擴展規范,雙字節編碼。UTF-8是針對unicode的可變長度編碼,它支持所有國家語言。
在python編寫程序時,通常指定#conding=utf-8。但是若終端顯示器支持的是GBK,為避免顯示錯誤,需要編碼轉換。

實際上,GBK和UTF-8都是以unicode為基礎的,它們的關系如下:

在用python編程過程中,若涉及到中文,且需要將中文代碼由UTF-8轉換成GBK時,具體操作如下:
python2.7版本,轉換過程為:UTF-8 —> Unicode —> GBK 。如下:
#coding=utf-8 name = '名字' #這里是UTF-8 #先將轉換UTF-8轉換成unicode name_unicode = name.decode('UTF-8') #decode需要指明現在的類型 #再將unicode轉換成GBK name_GBK = name_unicode.encode('GBK') #encode需要指明需要轉換成的類型 #轉換完成,在終端可以正常顯示 print(name_GBK)
python3.6版本,可直接將UTF-8轉換成GBK。如下:
#coding=utf-8 name = '名字' #這里是UTF-8 #直接將UTF-8轉換成GBK name_GBK = name.encode('GBK') #encode需要指明需要轉換成的類型 #轉換完成,在終端可以正常顯示 print(name_GBK)
另外,Windows自帶編碼轉換功能,可以自動將unicode轉換成任何需要的編碼形式。
所以,在python2.7版本下,可以將UTF-8轉換成unicode后,省略unicode轉成GBK環節。如下:
#coding=utf-8 name = '名字' #這里是UTF-8 #將UTF-8轉換成unicode name_unicode = name.decode('UTF-8') #decode需要指明現在的類型 #省略UTF-8轉碼GBK環節,由Windows自動完成。 print(name_unicode)
但是,如上做法在python3.6版本中會出現錯誤,因為python3之后的版本中移除了unicode類型、默認utf-8。慎用!
