Конвертировать Unicode в ASCII без ошибок в Python - PullRequest
164 голосов
/ 02 марта 2010

Мой код просто очищает веб-страницу, а затем преобразует ее в Unicode.

html = urllib.urlopen(link).read()
html.encode("utf8","ignore")
self.response.out.write(html)

Но я получаю UnicodeDecodeError:


Traceback (most recent call last):
  File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/ext/webapp/__init__.py", line 507, in __call__
    handler.get(*groups)
  File "/Users/greg/clounce/main.py", line 55, in get
    html.encode("utf8","ignore")
UnicodeDecodeError: 'ascii' codec can't decode byte 0xa0 in position 2818: ordinal not in range(128)

Я предполагаю, что это означает, что HTML содержит какую-то неправильно сформированную попытку Unicode где-то. Могу ли я просто отбросить те байты кода, которые вызывают проблему, вместо того, чтобы получить ошибку?

Ответы [ 11 ]

0 голосов
/ 03 мая 2016

Похоже, вы используете Python 2.x.Python 2.x по умолчанию ascii, и он не знает о Unicode.Отсюда и исключение.

Просто вставьте строку ниже после Шебанга, она будет работать

# -*- coding: utf-8 -*-
...