Найти - Пользователи
Полная версия: Метод decode() и кодировка CP-1251
Начало » Python для новичков » Метод decode() и кодировка CP-1251
1
Frankey
Проблема, короче говоря, в том, что следующий кусок кода:

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
так что с кодировкой я не прогадал.

В гугле ковырялся, чесна-чесна!
Чел_вТапКах
А обязательно получать данные через сокет? нельзя ли получать страницу с помощью urllib??
igor.kaist
Все должно быть правильно. Посмотрите что там у вас в data.
Или на крайний случай попробуйте data.decode('cp1251','ignore') и посмотрите что останется :)
P.S. Нехорошо называть переменную названием встроенной функции str
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB