Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 21, 2011 17:16:04

Isem
От:
Зарегистрирован: 2010-08-27
Сообщения: 447
Репутация: +  7  -
Профиль   Отправить e-mail  

UnicodeEncodeError: ... character '\u2013'

>>> a = array.array( 'B', b"""5\xe9</a><span>&middot;</span>\n\n\t\n        <a href="http://auto.mail.ru/commo
n/policy.html">\xd3\xf1\xeb\xee\xe2\xe8\xff \xe8\xf1\xef\xee\xeb\xfc\xe7\xe2
\xe0\xed\xe8\xff \xec\xe0\xf2\xe5\xf0\xe8\xe0\xeb\xee\xe2</a><span>&middot;</spa""")
>>> a.tostring().decode('cp1251')
'5й</a><span>&middot;</span>\n\n\t\n <a href="http://auto.mail.ru/commo\nn/policy.html">Условия использв\nания материалов</a><span>&middot;</spa'
То есть

print( rhtml.decode('cp1251') )



Отредактировано (Янв. 21, 2011 17:19:53)

Офлайн

#2 Янв. 21, 2011 20:23:39

alucardmc
От:
Зарегистрирован: 2011-01-21
Сообщения: 11
Репутация: +  0  -
Профиль   Отправить e-mail  

UnicodeEncodeError: ... character '\u2013'

я так и делаю, говорю что он раскодирует если часть документа брать, но если весь, то там попадается символ который он не может раскодировать.
Читал на форуме кто то обошел эту проблему отредактировав cp1251.py, какие изменения нужно туда внести?



Офлайн

#3 Янв. 21, 2011 20:55:13

o7412369815963
От:
Зарегистрирован: 2009-06-17
Сообщения: 1986
Репутация: +  32  -
Профиль   Отправить e-mail  

UnicodeEncodeError: ... character '\u2013'

давай кусок кода где страницу загружаешь и декодируешь

Офлайн

#4 Янв. 21, 2011 20:58:31

alucardmc
От:
Зарегистрирован: 2011-01-21
Сообщения: 11
Репутация: +  0  -
Профиль   Отправить e-mail  

UnicodeEncodeError: ... character '\u2013'

headers = {
'User-Agent' : 'Opera/9.80 (Windows NT 5.1; U; ru) Presto/2.6.30 Version/10.63',
'Host' : 'auto.mail.ru',
'Accept' : 'text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1',
'Accept-Language' : 'ru-RU,ru;q=0.9,en;q=0.8',
'Accept-Charset' : 'windows-1251, cp1251, *;q=0.1',
'Accept-Encoding' : 'txt, *;q=0',
'Connection' : 'Keep-Alive, TE',
'TE' : 'deflate, gzip, chunked, identity, trailers'
}

opener = urllib.request.build_opener()
req = urllib.request.Request(self.eturl, None, headers)

try:
page = opener.open(req);
except IOError as err:
print('error: ', err)
if page:
rhtml = page.read()
self.html = str(rhtml, 'cp1251') #тут все обрывается



Офлайн

#5 Янв. 21, 2011 21:17:49

Андрей Светлов
От:
Зарегистрирован: 2007-05-15
Сообщения: 3137
Репутация: +  14  -
Профиль   Адрес электронной почты  

UnicodeEncodeError: ... character '\u2013'

Что же вы голову морочите?
“Обрывается” то у вас на print(), а не на decoding from cp1251.

Исходники Питона править не нужно. Баг - в ваших руках/голове.



Офлайн

#6 Янв. 21, 2011 21:40:05

alucardmc
От:
Зарегистрирован: 2011-01-21
Сообщения: 11
Репутация: +  0  -
Профиль   Отправить e-mail  

UnicodeEncodeError: ... character '\u2013'

мда, скопировал код и создал в новом файле(дабы потестить, без всяких лишних действий, только это - загрузка и сохранение в self.html) и без всяких проблем, запускаю старый вылетает ошибка…



Офлайн

#7 Янв. 21, 2011 21:42:33

alucardmc
От:
Зарегистрирован: 2011-01-21
Сообщения: 11
Репутация: +  0  -
Профиль   Отправить e-mail  

UnicodeEncodeError: ... character '\u2013'

нет, принт это я после добавил



Офлайн

#8 Янв. 21, 2011 21:44:53

Андрей Светлов
От:
Зарегистрирован: 2007-05-15
Сообщения: 3137
Репутация: +  14  -
Профиль   Адрес электронной почты  

UnicodeEncodeError: ... character '\u2013'

для “посмотреть” хватило бы print(self.html.encode('cp866', ‘replace’))



Офлайн

#9 Янв. 21, 2011 21:51:44

alucardmc
От:
Зарегистрирован: 2011-01-21
Сообщения: 11
Репутация: +  0  -
Профиль   Отправить e-mail  

UnicodeEncodeError: ... character '\u2013'

все таки проблема была в headers, в старом коде они были немного другие поэтому вылетала ошибка



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version