python文件的編碼 v2.7
首先,
encode('codec') => 把unicode轉(zhuǎn)化成其他codec的str;
decode('codec') => 把其他codec的str轉(zhuǎn)換成unicode
python默認(rèn)charset:'ascii'.
import sys
print sys.getdefaultencoding()
如果字符集是'ascii'碼,那文件中不能處理中文。在開頭引入# coding=utf-8 或者 # - coding:utf-8 -,表明支持utf-8字符集。
打印unicode報錯 --> 檢查是否當(dāng)前編碼是utf-8,然后encode('utf-8')。比如從網(wǎng)上爬下來的中文數(shù)據(jù),首先要decode('GBK')。為了顯示出來還要encode('utf-8')
utf-8和utf-16
utf-8是變長編碼,0000-007F一個字節(jié),0080-07FF->兩個字節(jié),其他->三個字節(jié)
utf-16是固定兩個字節(jié)編碼方式
python中str.encode("targetcodec")其實做了隱式的str.decode("defaultcodec").encode("targetcodec"),而在print一個unicode的時候則會隱式做encode('defaultcodec)操作,這也是經(jīng)常會出錯的一個原因。解決辦法是修改defaultcodec:
s=u'中文'
reload(sys)
sys.setdefaultencoding('utf-8')
print s