【python】编码问题

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)或扫描下方二维码关注,我们将持续搜寻程序员必备基础技能包提供给大家。


你可能感兴趣的:(【python】编码问题)