0x01 问题描述
# coding:utf-8
a = '发顺丰'
b = a.encode('gb2312')
print b
# 报错
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe5
in position 0: ordinal not in range(128)
py报出上面错误是因为,文档存储的时候是以utf-8的编码格式存储的,在内存中执行代码的时候会自动解码成unicode,但是它默认是以ASCII进行解码的,中文没法用ASCII解码,所以报错
0x02 解决方案
- 编码的时候指明从哪种编码类型解码
a = '发顺丰'
b = a.decode('utf-8').encode('gb2312')
print b
- 设置模块的整体解码类型
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
a = '发顺丰'
b = a.encode('gb2312')
print b
欢迎关注微信公众号(coder0x00)或扫描下方二维码关注,我们将持续搜寻程序员必备基础技能包提供给大家。
网友评论