You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ASCII编码无法编码字符错误,content.decode('utf-8','ignore')无效,求解决方案

解决UnicodeEncodeError: 'ascii' codec can't encode character问题

这个错误其实不是出在你获取网页内容的环节,而是打印输出到终端的时候——你的终端默认编码是ASCII,无法处理页面中的非ASCII字符,而你之前尝试的content.decode('utf-8','ignore')没生效,是因为用错了地方。下面给你几个实用的解决办法:

方案1:打印时显式处理编码

直接修改print(soup)这一行,在打印前对soup内容做编码容错处理:

print(soup.encode('utf-8', 'ignore').decode('utf-8'))

这样会忽略无法编码的字符,确保内容能正常打印。

方案2:强制设置终端输出编码(Python3推荐)

在代码开头添加几行,强制标准输出使用UTF-8编码,这样后续所有print操作都不会再触发ASCII编码错误:

import sys
sys.stdout.reconfigure(encoding='utf-8')

# 然后正常执行你的代码
req = Request("https://www.openbugbounty.org/researchers/Spam404/vip/page/1/", headers ={'User-Agent':'Mozilla/5.0'})
sauce = urllib.request.urlopen(req).read()
soup = bs.BeautifulSoup(sauce,'lxml')
print(soup)

方案3:提取目标内容而非打印整个Soup

如果不需要打印整个页面的HTML结构,建议只提取你需要的具体内容,比如页面中的文本块或元素:

# 示例:提取页面所有标题文本
for title in soup.find_all(['h1', 'h2']):
    print(title.get_text(strip=True))

这种方式不仅能避免编码问题,还能让输出更简洁。

方案4:针对Python2的特殊处理(如果使用Python2)

如果你还在使用Python2,需要额外设置默认编码,并在读取响应时就做解码:

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

req = Request("https://www.openbugbounty.org/researchers/Spam404/vip/page/1/", headers ={'User-Agent':'Mozilla/5.0'})
sauce = urllib.request.urlopen(req).read().decode('utf-8', 'ignore')
soup = bs.BeautifulSoup(sauce,'lxml')
print(soup)

内容的提问来源于stack exchange,提问作者Mathew Pellegrini

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 09:32:05