0x01 問題描述
# coding:utf-8
a = '發(fā)順豐'
b = a.encode('gb2312')
print b
# 報(bào)錯(cuò)
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe5
in position 0: ordinal not in range(128)
py報(bào)出上面錯(cuò)誤是因?yàn)椋臋n存儲的時(shí)候是以utf-8的編碼格式存儲的捌刮,在內(nèi)存中執(zhí)行代碼的時(shí)候會自動解碼成unicode浸间,但是它默認(rèn)是以ASCII進(jìn)行解碼的恨憎,中文沒法用ASCII解碼,所以報(bào)錯(cuò)
0x02 解決方案
- 編碼的時(shí)候指明從哪種編碼類型解碼
a = '發(fā)順豐'
b = a.decode('utf-8').encode('gb2312')
print b
- 設(shè)置模塊的整體解碼類型
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
a = '發(fā)順豐'
b = a.encode('gb2312')
print b
歡迎關(guān)注微信公眾號(coder0x00)或掃描下方二維碼關(guān)注验夯,我們將持續(xù)搜尋程序員必備基礎(chǔ)技能包提供給大家猖吴。