解决python编码报错:UnicodeEncodeError: ‘ascii‘ codec can‘t encode character u‘\uff08‘ in position 13:ordin

文章讲述了在Python中遇到Unicode编码错误的问题,特别是asciicodeccantencodecharacter的报错。作者分析了错误原因,指出Python3默认使用UTF-8,但某些库可能仍使用ASCII编码。解决方案是直接修改出错的源文件,将ASCII替换为UTF-8进行编码。
摘要由CSDN通过智能技术生成

解决python编码报错:UnicodeEncodeError: 'ascii' codec can't encode character u'\uff08' in position 13: ordinal not


   最近在手搓数据分析小项目时,需要借助于爬虫获取些数据,于是翻出去年暑假写的python爬虫代码,往常可以正常运行的代码,却总是报UnicodeEncodeError: 'ascii' codec can't encode character u'\uff08' in position 13: ordinal not的错误。

​    尝试网络上许多解决办法都行不通,提醒一下:博主使用windows平台pycharm:

​    网上的解决办法集中在修改编码的方式为utf-8,最多的代码格式如下:

import sys
reload(sys)
sys.setdefaultencoding('utf-8')

​    但是代码运行报错,显示NameError: name 'reload' is not defined,同时指出没有setdefaultcoding方法,后续查找相关资料,发现python2默认使用ASCII码处理中文,而python3默认就是utf-8编码方式,理论上将不应该出现报错,其他博文修改环境变量的方式博主并未尝试,读者可以自行进行尝试,这里提供一种简单有效的变更方法:

报错信息:
  File "C:\Users\腻味\AppData\Local\Programs\Python\Python37\lib\http\client.py", line 1198, in _encode_request
    return request.encode('ascii')
UnicodeEncodeError: 'ascii' codec can't encode characters in position 83-85: ordinal not in range(128)

​    仔细查看报错信息,发现代码return request.encode('ascii'),好家伙,返回的内容使用ascii进行encode编码,难怪会报无法编解码的错误,问题找到啦,解决办法也就有了,进入client.py文件,修改编码方式为utf-8即可:

def _encode_request(self, request):
    # ASCII also helps prevent CVE-2019-9740.
    # return request.encode('ascii')
	return request.encode('utf-8')

​    再次运行代码就不会报错了!!!


下面给出博文在问题解决中参考的博文:

  1. UnicodeEncodeError: 'ascii' codec can't encode character u'\uff08' in position 13: ordinal not

    参考文献:(2条消息) python3遇到中文编码‘ascii‘ codec can‘t encode characters 的问题_python 打印中文报错 ascii_hjxu2016的博客-CSDN博客

    (2条消息) 终极解决方案UnicodeEncodeError: ‘ascii’ codec can’t encode character u’\uff08’ in position 13: ordinal not_csdn_yuan88的博客-CSDN博客

  2. NameError: name 'reload' is not defined

    参考文献:(2条消息) 解决NameError: name ‘reload‘ is not defined问题_缓步安歌的博客-CSDN博客

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值