Python Requests utf-8解码错误求助:无法解码字节0xe3
解决requests.get的UTF-8解码错误
问题原因
这个错误是因为requests默认尝试用UTF-8解码响应内容,但目标巴西税务CNPJ查询页面的响应实际使用**ISO-8859-1(Latin-1)**编码——0xe3是葡萄牙语里的ã字符,在ISO-8859-1中是单个字节,UTF-8解码时会判定为无效续字节,从而报错。
解决方案
方案1:手动指定编码
直接获取原始字节内容,用正确编码解码:
response = session.get(url, headers=headers) # 用ISO-8859-1编码解码响应内容 content = response.content.decode('ISO-8859-1')
方案2:让requests自动推断编码
通过apparent_encoding让requests根据响应内容自动识别正确编码:
response = session.get(url, headers=headers) # 自动检测并设置编码 response.encoding = response.apparent_encoding # 之后可直接使用response.text获取解码后的内容 content = response.text
额外注意事项
- 巴西税务的CNPJ查询页面依赖会话状态,要确保session保留了从
cnpjreva_solicitacao.asp获取的cookie,否则可能无法正常访问目标页面。 - 不要随意移除请求头,
User-Agent、Referer等参数是网站验证请求合法性的关键,移除后可能触发反爬机制导致访问被拒。
内容的提问来源于stack exchange,提问作者Vitor Hugo
相关产品推荐
相关产品推荐

