1. 程式人生 > >str和unicode類

str和unicode類

解碼 python color 們的 utf8 int 字符 疑問 decode

首先明確一點,我們編輯好一段文本,python並不知道我們的文本是以什麽格式編碼的。如果是純英文字符還好說,如果這段代碼中有漢字,則會報錯了。

所以我們要顯式的告訴python此文本的編碼格式。

為了說明問題,首先將以下測試代碼以utf-8格式編輯保存

 1 # -*- coding:utf-8 -*-  #告知python我這個文件裏的文本是用utf-8編碼的
 2 import time
 3 
 4 a = 
 5 print a#亂碼,雖然python已經正確識別了a,但windows控制臺使用gbk進行解碼
 6 b = unicode(,utf-8).encode(
gbk)#將嚴先解碼為unicode格式,在編碼為gbk格式 7 print b#正確顯示嚴 8 c = a.decode(‘utf-8)#等效於c = unicode(‘嚴‘,‘utf-8‘),亦等效於c = u‘嚴‘ c是unicode格式的 9 print type(a),type(b),type(c)#a,b都是str類,c是unicode類 10 print c 11 time.sleep(4)

但是可能還有一個疑問,既然windows控制臺使用gbk解碼,為什麽utf8的a是亂碼,而unicode的b就不會是亂碼呢?

因為Python在向控制臺輸出unicode對象的時候會自動根據輸出環境的編碼進行轉換,這樣就能正確解碼了。但如果輸出的不是unicode對象而是普通字符串,則不進行轉換

str和unicode類