проблема декодирования с urllib2 в питоне - PullRequest
0 голосов
/ 16 ноября 2010

Я пытаюсь использовать urllib2 в Python 2.7 для извлечения страницы из Интернета.Страница оказывается закодированной в Unicode (UTF-8) и имеет греческие символы.Когда я пытаюсь получить и распечатать его с помощью приведенного ниже кода, вместо греческих символов я получаю тарабарщину.

import urllib2
print urllib2.urlopen("http://www.pamestihima.gr").read()

Результат одинаков как в Netbeans 6.9.1, так и в CLI Windows 7.

Я что-то не так делаю, но что?

Ответы [ 2 ]

3 голосов
/ 16 ноября 2010
  1. Unicode - это , а не UTF-8.UTF-8 - это строковое кодирование, такое как ISO-8859-1, ASCII и т. Д.

  2. Всегда декодируйте ваши данные как можно скорее, чтобы получить настоящий Unicodeэтого('somestring in utf8'.decode('utf-8') == u'somestring in utf-8'), объектами Unicode являются u'', а не ''

  3. Когда у вас есть данные, покидающие ваше приложение, всегда кодируйте в правильной кодировке,Для веб-контента это в основном utf-8.Для консольного материала это то, чем является ваша консольная кодировка.В Windows это , а не UTF-8 по умолчанию.

1 голос
/ 16 ноября 2010

Он печатается правильно и для меня.

Проверьте кодировку символов программы, в которой вы просматриваете исходный код HTML. Например, в терминале Linux вы можете найти «Установить кодировку символов» и убедиться, что это UTF-8.

...