编码/解码在浏览器中工作,但不在终端中工作

时间:2011-07-02 11:28:21

标签: python encoding urllib

这是我的代码:

import urllib

print urllib.urlopen('http://www.indianexpress.com/news/heart-of-the-deal/811626/').read().decode('iso-8859-1')

当我在Firefox中查看页面时,文本显示正确。但是,在终端上,我看到了字符编码的问题。

以下是一些格式错误的输出示例:

long-term  in
Indias
no-go areas

我该如何解决这个问题?

3 个答案:

答案 0 :(得分:0)

试试这个(忽略未知的字符)

import urllib
url = 'http://www.indianexpress.com/news/heart-of-the-deal/811626/'
print urllib.urlopen(url).read().decode('iso-8859-1').encode('ascii','ignore')

答案 1 :(得分:0)

您需要使用实际的字符集sent by the server,而不是总是假设它是ISO 8859-1。使用功能强大的HTML解析器(例如Beautiful Soup)可以提供帮助。

答案 2 :(得分:0)

网页在于;它在cp1252又名windows-1252中编码,而不是在ISO-8859-1中编码。

>>> import urllib
>>> guff = urllib.urlopen('http://www.indianexpress.com/news/heart-of-the-deal/811626/').read()
>>> uguff = guff.decode('latin1')
>>> baddies = set(c for c in uguff if u'\x80' <= c < u'\xa0')
>>> baddies
set([u'\x93', u'\x92', u'\x94', u'\x97'])