Python请求:UnicodeEncodeError:'charmap'编解码器无法编码字符

Posted

技术标签:

【中文标题】Python请求:UnicodeEncodeError:\'charmap\'编解码器无法编码字符【英文标题】:Python requests: UnicodeEncodeError: 'charmap' codec can't encode characterPython请求:UnicodeEncodeError:'charmap'编解码器无法编码字符 【发布时间】:2018-03-07 21:16:31 【问题描述】:

我抓取了一个网页(此处代码中的名称已更改)如下:

import requests
r = requests.get('https://www.samplewebpage.com')

然后我尝试将 r.text 写入文件如下:

f = open ('filename', 'w')
f.write(r.text)
f.close()

我得到一个错误:

UnicodeEncodeError: 'charmap' codec can't encode character '\u20b9' in position 158691: character maps to <undefined>

r.encoding 显示 UTF-8。如何解决以上问题?

还尝试了以下方法: - 很少有其他随机网页,并且能够在大多数情况下运行代码而不会出现任何错误。 - 而不是 r.text 使用 r.content.decode('utf-8', 'ignore') 但与上述相同的错误

我的环境/系统规格:

Python 3.6.4 Windows 8.1 专业版,64 位 从https://www.python.org 安装的默认 IDLE。 也尝试使用 Atom 中的脚本,但同样的错误。

怀疑控制台编码不匹配,因为我在这个论坛上的另一个类似问题中读到,我再次确认 Atom 控制台设置为 UTF-8,但我相信控制台编码不是这里的问题,因为我想写文件。

谢谢

【问题讨论】:

【参考方案1】:

尝试明确指定文件的编码:

f = open ('filename', 'w', encoding='utf8')
f.write(r.text)
f.close()

【讨论】:

以上是关于Python请求:UnicodeEncodeError:'charmap'编解码器无法编码字符的主要内容,如果未能解决你的问题,请参考以下文章

python总结-post请求

Python语言基础——Python 请求模块

ajax如何请求python接口

Python爬虫知识点——请求

python http请求方法整理

python 怎么处理http post 的请求参数