解决UnicodeEncodeError: ‘ascii‘ codec can‘t encode characters in position xxx: ordinal not in range

在调用一个库时,出现了一个异常报错类似如UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-1: ordinal not in range(128),只要该库返回结果包含中文,该结果时就会出现该异常。

原因:

Python2默认使用ASCII编码,ASCII编码不包含中文,处理中文时会报错

Python3更换为默认使用Unicode编码

解决方法(任选其一):

1.

在文件首部添加

# coding=utf-8

2.

在python的Lib\site-packages文件夹下新建一个sitecustomize.py,内容为:

# encoding=utf8
import sys

reload(sys)
sys.setdefaultencoding('utf8')   

编码

  • ascii 1个字节
  • gb-2312(1980)
  • gbk(1995) 对gb-2312扩展,包含中日韩等国家文字
  • unicode(万国码) 

        ucs2 固定的2个字节表示二进制和文字的对应关系 2^16

        ucs4 固定的4个字节表示二进制和文字的对应关系 2^32 ->浪费空间,流量 

  • utf-8 对unicode进行压缩,用尽可能少的字节表示数据

开发时尽量使用utf-8进行编码,一个中文占3个字节

  • 7
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值