Проблема с кодировкой при попытке очистки страницы - PullRequest
0 голосов
/ 02 февраля 2012

Я использую beautifulSoup для очистки страницы, имеющей кодировку ISO-8859-1, однако наткнулся на мой маленький сбой.

У меня есть строка, которая гласит:

logging.info("Processing [%s]" % (link))

Переменная link является одним из значений, извлеченных из Beautifulsoup. Это строка Unicode, и я могу напечатать ее, набрав print link. Он отображается на консоли точно так же, как он был очищен, но строка выше выдает эту ошибку:

UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 14: ordinal not in range(128)

Я уже читал об Unicode, но не могу понять, почему он может распечатать его, но не может его записать.

Строка, о которой идет речь, такова:

booba-concert-à-bercy

Есть идеи, где я все это испорчу?

Спасибо.

Ответы [ 2 ]

3 голосов
/ 02 февраля 2012

logging не нравится unicode;передать его байтов.

logging.info("Processing [%s]" % (link.encode('utf-8')))
2 голосов
/ 07 февраля 2012

Мне удалось решить эту проблему, добавив файл с именем sitecustomize.py в мою директорию Python/Lib/site-packages.Этот файл содержал две строки: import sys и sys.setdefaultencoding('utf-8').

Кодировка по умолчанию до этого была ascii и, следовательно, проблемы.Теперь мне не нужно указывать явную кодировку для переменной link, так как она использует кодировку по умолчанию, например utf-8, и преобразует ее в эту.терминал в той же кодировке, но это не сломает мой код.

...