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


最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 编码问题一直困扰着开发人员,尤其在 Java 中更加明显,因为 Java 是跨平台语言,不同平台之间编码之间的切换...
    x360阅读 2,605评论 1赞 20
  • 字符集和编码简介 在编程中常常可以见到各种字符集和编码,包括ASCII,MBCS,Unicode等字符集。确切的说...
    兰山小亭阅读 9,158评论 0赞 13
  • 什么是编码 任何一种语言、文字、符号等等,计算都是将其以一种类似字典的形式存起来的,比如最早的计算机系统将英文文字...
    随风化作雨阅读 1,699评论 1赞 2
  • 大概每个人在使用软件时都遇到过乱码的问题,这是由于字符的编码和解码方式不一致导致,我们知道计算机只认识二进制数据,...
    楚客阅读 1,599评论 1赞 9
  • 寸金难买寸金丝 金丝楠木长金枝 群生村野数百年 价值连城无人知 江西塔前村民痴 守着金山而不知 错把金丝当水楠 老...
    秋AldrichB果阅读 624评论 1赞 8

友情链接更多精彩内容