Уведомления

Группа в Telegram: @pythonsu

#1 Март 5, 2010 11:28:06

Frankey
От:
Зарегистрирован: 2010-03-05
Сообщения: 1
Репутация: +  0  -
Профиль   Отправить e-mail  

Метод decode() и кодировка CP-1251

Проблема, короче говоря, в том, что следующий кусок кода:

data = sock1.recv(165000)   #получение двоичных данных через сокет
str = data.decode('cp1251')
выдаёт вот такую ошибку:

Traceback (most recent call last):
File "C:/Users/Frankey/Desktop/Летающий цирк Усама бин Ладена/kp.py", line 12, in <module>
File "C:\Program Files\Python 3.1.1\lib\encodings\cp1251.py", line 15, in decode
return codecs.charmap_decode(input,errors,decoding_table)
UnicodeDecodeError: 'charmap' codec can't decode byte 0x98 in position 811: character maps to <undefined>
Посмотрел, что означает символ 0x98 в cp-1251 - так ничего не означает! Он использоваться, по идее, и не должен! Что с этим делать - ума не приложу. =( Мож как-нить игнорировать его or something? :/ Подскажите, чо делодь?!!

ЗЫ: Самое интересное, что эти данные - вебстраница http://www.kinopoisk.ru/level/20/ и в заголовке указано
Content-Type: text/html; charset=windows-1251
так что с кодировкой я не прогадал.

В гугле ковырялся, чесна-чесна!



Офлайн

#2 Март 5, 2010 12:26:39

Чел_вТапКах
От:
Зарегистрирован: 2009-07-22
Сообщения: 92
Репутация: +  0  -
Профиль   Отправить e-mail  

Метод decode() и кодировка CP-1251

А обязательно получать данные через сокет? нельзя ли получать страницу с помощью urllib??



Офлайн

#3 Март 5, 2010 14:24:36

igor.kaist
От:
Зарегистрирован: 2007-11-12
Сообщения: 1879
Репутация: +  3  -
Профиль   Отправить e-mail  

Метод decode() и кодировка CP-1251

Все должно быть правильно. Посмотрите что там у вас в data.
Или на крайний случай попробуйте data.decode('cp1251','ignore') и посмотрите что останется :)
P.S. Нехорошо называть переменную названием встроенной функции str



Отредактировано (Март 5, 2010 14:24:55)

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version