Проблема с кодировкой при загрузке HTML с использованием механизма и Python 2.6

browser = mechanize.Browser()
page = browser.open(url)
html = page.get_data()

print html

Он показывает какие-то странные символы. Я предполагаю, что это строка UTF-8, но Python этого не знает и не может правильно ее показать.

Как я могу преобразовать эту строку в строку Unicode, например

u = u'test'

person luchaninov    schedule 27.09.2010    source источник
comment
Сообщите нам URL-адрес или некоторые странные символы, которые появляются на странице. Что касается вашего UnicodeDecodeError, документ определенно не соответствует UTF-8.   -  person AndiDog    schedule 27.09.2010


Ответы (3)


Он был заархивирован

def ungzipResponse(r,b):
    headers = r.info()
    if headers['Content-Encoding']=='gzip':
        import gzip
        gz = gzip.GzipFile(fileobj=r, mode='rb')
        html = gz.read()
        gz.close()
        headers["Content-type"] = "text/html; charset=utf-8"
        r.set_data( html )
        b.set_response(r)

response = browser.open(url)
ungzipResponse(response, browser)
html = response.read()
person luchaninov    schedule 27.09.2010
comment
В зависимости от того, что вы пытаетесь сделать, вы действительно должны использовать существующую библиотеку, которая обрабатывает такие низкоуровневые вещи для вас. - person AndiDog; 27.09.2010
comment
Я пытался найти, как сделать это проще, но это кажется самым простым решением. - person luchaninov; 27.09.2010

вам нужно определить кодировку, например:

#!/usr/bin/python
# -*- coding: iso-8859-15 -*-

механизировать нужно.

для получения дополнительной информации проверьте это http://www.python.org/dev/peps/pep-0263/

person Yuda Prawira    schedule 03.10.2010
comment
но вам нужно: # -- кодировка: iso-8859-15 -- не # -- кодировка: utf-8 -- – - person Yuda Prawira; 03.10.2010

person    schedule
comment
UnicodeDecodeError: кодек utf8 не может декодировать байт 0x8b в позиции 1: неожиданный байт кода - person luchaninov; 27.09.2010
comment
Тогда это не utf-8. Вы должны изучить заголовки, чтобы увидеть, какой набор символов возвращается. - person Ned Batchelder; 27.09.2010
comment
facebook.com, Content-Type: text/html; кодировка = utf-8 - person luchaninov; 27.09.2010
comment
@how: сохраните вывод в файл и откройте его в редакторе с поддержкой UTF или используйте шестнадцатеричный редактор, чтобы увидеть, действительно ли это UTF-8, что возвращает механизм. - person AndiDog; 27.09.2010
comment
Извините, это было заархивировано. Забыл разархивировать :) - person luchaninov; 27.09.2010