Найти - Пользователи
Полная версия: cp1251 и символ с кодом 0x98
Начало » Python для новичков » cp1251 и символ с кодом 0x98
1
Georg
Нужно отправить двухбайтовое число в бинарном формате, кодировка cp1251, т.к. после числа нужно еще добавить текст в этой кодировке.
Перевожу число в строку как str=chr(n%256)+chr(n/256), когда один из байтов равен 0x98 возникает ошибка,
UnicodeDecodeError: ‘charmap’ codec can't decode byte 0x98 in position *: character maps to <undefined>
т.к. этот символ не определен в cp1251, как это можно обойти?
UPD. ошибка происходит после, когда я пытаюсь добавить к str строку
doza_and
обычно для упаковки используется модуль struct
o7412369815963
>>> n = 0x2598
>>> s = chr(n%256) + chr(n/256) + u'hello вася'.encode('cp1251')
>>> s
'\x98%hello \xe2\xe0\xf1\xff'
o7412369815963
и в догонку
>>> print ord(s[0]) + ord(s[1])*0x100, s[2:].decode('cp1251')
9624 hello вася
свой протокол изобретаешь что ли?
Georg
Проверил пример, вроде все работает, давай из программы куски вырезать чтоб собрать минимальный текст чтоб воспроизводилось, 2 раза воспроизвелось и больше не хочет, мистика какая-то, хотя в программе стабильно воспроизводится, отредактировал cp1251.py, добавил символ 0x98, тогда не глючит, решение конечно не ахти.
Да, использую свой протокол, когда протокол не сложный и нужно экономить трафик по моему нормальное решение
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