我在阅读未指定字符集的网页时遇到问题。它包含一些非 ascii 字符,例如欧元货币,我的浏览器能够很好地阅读它。在 Firefox 中,在页面信息上我可以看到使用的编码是“ISO-8859-1”和渲染模式“怪癖模式”。但是,python-requests 无法真正解码那些非 ascii 字符,并且在尝试将例如该字符串写入文本文件时出现错误。示例:
result = requests.get(url)
result.encoding = 'ISO-8859-1'
html = result.text
open('textfile.txt', 'w').write(html)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
UnicodeEncodeError: 'ascii' codec can't encode character u'\x80'
如果 u'\x80' 应该以 'ISO-8859-1' 编码代表欧元货币,这应该可以
print '\x80'.decode('ISO-8859-1')
但我得到一个不可打印的字符,而不是欧元。
那么,该网页如何在浏览器中工作,但请求(urllib/2 也是)无法处理该编码?我也试过'utf-8'但同样的事情。有什么建议么?