Кодирование / декодирование работает в браузере, но не в терминале - PullRequest
0 голосов
/ 02 июля 2011

Вот мой код:

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 голосов
/ 02 июля 2011

Вам нужно использовать фактическую кодировку , отправленную сервером , вместо того, чтобы всегда предполагать, что это ISO 8859-1.Может помочь использование подходящего анализатора HTML, такого как Beautiful Soup .

0 голосов
/ 26 октября 2011

веб-страница лежит; кодируется в cp1252 aka 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'])
0 голосов
/ 02 июля 2011

Попробуйте это (игнорировать неизвестные символы)

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')
...