Уведомления

Группа в Telegram: @pythonsu

#1 Март 2, 2012 13:58:53

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

socket send не шлет unicode

у меня есть вот такая строка u'\xb8\x0c' и я пытаюсь слать :

 Traceback (most recent call last):
File "/usr/lib/python2.7/threading.py", line 552, in __bootstrap_inner
self.run()
File "f8.py", line 283, in run
sock.send(size)
UnicodeEncodeError: 'ascii' codec can't encode character u'\xb8' in position 0: ordinal not in range(128)
мне нужно переслать по сути байты, это у нас два байта … вот они 0b10111000 и 0b00001100

как переслать данные так что бы на другом конце получили именно эти байты (0b10111000 и 0b00001100) ?



Офлайн

#2 Март 2, 2012 14:43:20

agalen
От:
Зарегистрирован: 2011-03-23
Сообщения: 185
Репутация: +  17  -
Профиль   Отправить e-mail  

socket send не шлет unicode

sonniy
это у нас два байта
Это не 2 байта, а 2 символа. Получить однобайтовую строку можно с помощью метода encode, но нужно правильно задать кодировку:
>>> u'\xb8\x0c'.encode( "utf-8" )
'\xc2\xb8\x0c'
Другой вариант - подходит только, если исходная строка содержит символы из диапазона 0-255 (русские буквы не пройдут):
>>> """.join( [ chr(ord(x)) for x in u'\xb8\x0c' ] )
'\xb8\x0c'



Офлайн

#3 Март 3, 2012 02:58:35

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9874
Репутация: +  854  -
Профиль   Отправить e-mail  

socket send не шлет unicode

Офлайн

#4 Март 3, 2012 13:41:15

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

socket send не шлет unicode

решение

ЗЫ
простите за дубль топик, если можно перенесите все сюда



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version