UnicodeEncodeError при получении URL-адресов - PullRequest
3 голосов
/ 12 сентября 2010

Я использую urlfetch для получения URL. Когда я пытаюсь отправить его в функцию html2text (удаляет все теги HTML), я получаю следующее сообщение:

UnicodeEncodeError: 'charmap' codec can't encode characters in position  ... character maps to <undefined>

Я пытался обработать кодирование ('UTF-8', 'игнорировать') строки, но я продолжаю получать эту ошибку.

Есть идеи?

Спасибо

Joel


Код:

result = urlfetch.fetch(url="http://www.google.com")
html2text(result.content.encode('utf-8', 'ignore'))

И сообщение об ошибке:

File "C:\Python26\lib\encodings\cp1252.py", line 12, in encode
return codecs.charmap_encode(input,errors,encoding_table)
UnicodeEncodeError: 'charmap' codec can't encode characters in position 159-165: character maps to <undefined>

1 Ответ

6 голосов
/ 12 сентября 2010

Вам необходимо декодировать данные, которые вы извлекли первыми! С каким кодеком? Зависит от сайта, который вы получаете.

Когда у вас есть юникод и вы пытаетесь закодировать его с помощью some_unicode.encode('utf-8', 'ignore'), я не могу представить, как это может выдать ошибку.

Хорошо, что тебе нужно сделать:

result = fetch('http://google.com') 
content_type = result.headers['Content-Type'] # figure out what you just fetched
ctype, charset = content_type.split(';')
encoding = charset[len(' charset='):] # get the encoding
print encoding # ie ISO-8859-1
utext = result.content.decode(encoding) # now you have unicode
text = utext.encode('utf8', 'ignore') # encode to uft8

Это не совсем надежно, но оно должно показать вам путь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...