Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 21, 2011 15:46:18

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

UnicodeEncodeError: ... character '\u2013'

В чем прикол?
Загружаю с интернета страницу, не могу раскодировать ее
вылетает ошибка

    print(str(rhtml, 'cp1251', 'ignore'))
File "\Python31\lib\encodings\cp866.py", line 19, in enc
ode
return codecs.charmap_encode(input,self.errors,encoding_map)[0]
UnicodeEncodeError: 'charmap' codec can't encode character '\u2013' in position
41807: character maps to <undefined>
Уже не знаю как бороться, как поправить файл cp866.py чтоб не было таких проблем?
получаю страницу вывожу ее
rhtml = page.read()
print(rhtml)
получаю
...
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
...
Это часть, что я получаю, то есть англ символы норм вывелись а русские нет, при этом print(type(rhtml)) - <class ‘bytes’>
а как только пытаюсь байты перенести в строку(причем ошибка если всю страницу)-вылетает ошибка что выше



Офлайн

#2 Янв. 21, 2011 15:49:24

bazooka
От:
Зарегистрирован: 2009-04-12
Сообщения: 165
Репутация: +  0  -
Профиль   Отправить e-mail  

UnicodeEncodeError: ... character '\u2013'

версия python?



Офлайн

#3 Янв. 21, 2011 15:57:05

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

UnicodeEncodeError: ... character '\u2013'

3.1
и вообще почему такая ошибка возникает? как я понимаю баг в самом питоне, в файле кодировок cp866.py?



Отредактировано (Янв. 21, 2011 15:58:29)

Офлайн

#4 Янв. 21, 2011 16:15:54

regall
От: Киев
Зарегистрирован: 2008-07-17
Сообщения: 1583
Репутация: +  3  -
Профиль   Отправить e-mail  

UnicodeEncodeError: ... character '\u2013'

alucardmc, почитайте для начала, как устроена работа с байтами и строками в Python 3.x. - http://diveintopython3.org/strings.html#byte-arrays



Офлайн

#5 Янв. 21, 2011 16:16:53

bazooka
От:
Зарегистрирован: 2009-04-12
Сообщения: 165
Репутация: +  0  -
Профиль   Отправить e-mail  

UnicodeEncodeError: ... character '\u2013'

а rhtml точно в cp1251?



Офлайн

#6 Янв. 21, 2011 16:34:58

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

UnicodeEncodeError: ... character '\u2013'

страница на сайте <meta http-equiv=“content-type” content=“text/html; charset=windows-1251” />
посылаю в хэдах
'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’,



Офлайн

#7 Янв. 21, 2011 16:38:06

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

UnicodeEncodeError: ... character '\u2013'

прикол в том что он не может один символ раскодировать, как его пропустить? ‘ignore’ и ‘replace’ по моему вообще не работают



Офлайн

#8 Янв. 21, 2011 16:39:32

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

UnicodeEncodeError: ... character '\u2013'

при чем здесь http://diveintopython3.org/strings.html#byte-arrays ? читай о чем я пишу



Офлайн

#9 Янв. 21, 2011 16:48:42

regall
От: Киев
Зарегистрирован: 2008-07-17
Сообщения: 1583
Репутация: +  3  -
Профиль   Отправить e-mail  

UnicodeEncodeError: ... character '\u2013'

alucardmc
при чем здесь http://diveintopython3.org/strings.html#byte-arrays ? читай о чем я пишу
Да, это баг в питоне. Забейте на него, такой баговый язык …



Офлайн

#10 Янв. 21, 2011 16:50:12

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

UnicodeEncodeError: ... character '\u2013'

как поправить этот баг?



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version