Форум сайта python.su
у меня по сокету прилетает длинное сообщение в utf-8 (русский язык), но иногда вылетает “###result in error code page”, я думаю из-за того что иногда приходящий пакет режет двух-байтный симовол по полам, из за этого питон не может сформировать входящее сообщение ы утф8.
while 1:
buf = s.recv(16384)
if not len(buf):
break
try:
print unicode(buf,'utf-8'),
except:
print '###result in error code page'
z = ''
while 1:
buf = s.recv(16384)
if not len(buf):
break
if z:
buf = z + buf
z = ''
if buf[-1] > 127:
z = buf[-1]
buf = buf[:-1]
try:
print unicode(buf,'utf-8'),
except:
print '###result in error code page'
Отредактировано (Сен. 15, 2009 08:38:32)
Офлайн
Может задействовать хоть какой-то протокол обмена данными? Или свой придумать на крайняк. Иначе тут не разберёшь где одно сообщение заканчивается и где второе начинается.
Офлайн
Офлайн
poltergeistпередается единственное сообщение, только по кускам, но на удаленной машине оно формируется постепенно.
Может задействовать хоть какой-то протокол обмена данными? Или свой придумать на крайняк. Иначе тут не разберёшь где одно сообщение заканчивается и где второе начинается.
Офлайн
а вообще можно попробовать сделать как в первом посте, только при получении пакета разбивать его на байты, и собирать перед преобразованием в утф8, перекинув последний байт если он - начало 2-х байтного символа
Офлайн