【问题标题】:python-requests, finding the right encodingpython-requests,找到正确的编码
【发布时间】:2013-02-28 23:32:07
【问题描述】:

我在阅读未指定字符集的网页时遇到问题。它包含一些非 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')

但我得到一个不可打印的字符,而不是欧元。

那么,该网页如何在浏览器中工作,但 requests(urllib/2 too) 无法处理该编码?我也试过'utf-8'但同样的事情。有什么建议吗?

【问题讨论】:

    标签: python python-requests


    【解决方案1】:

    问题是真正的编码是cp1252,像你这样可以看看:

     print '\x80'.decode('cp1252')
    

    此相关答案提供了更多详细信息:

    PHP function iconv character encoding from iso-8859-1 to utf-8

    它与 python 无关,但它是同一个问题,并给出了为什么会发生这种情况的一些背景。

    【讨论】:

      猜你喜欢
      • 2018-03-28
      • 2014-08-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-12
      • 2020-05-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多