在linux centos系統中使用python2.7.2對一個字符串解碼然后輸出,代碼如下:
s = "哈哈哈"
print s.decode('utf-8')
結果報了如下的錯誤:
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-1: ordinal not in range(128)
然后在代碼前使用了:
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
這個編碼設置,運行依然報如上錯誤。
從輸出看,解碼是沒問題的,反而是編碼出了問題,應該是當前環境下print時候編碼出的問題
於是,將代碼改為:
print (s.decode('utf-8')).encode('gb2312')
結果沒問題了。
所以在使用 print 的時候,要注意環境所需的編碼。