Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 18, 2013 14:33:56

kristus
Зарегистрирован: 2012-10-27
Сообщения: 40
Репутация: +  0  -
Профиль   Отправить e-mail  

перекодирование кириллицы в байты

Нужно перекодировать строку в массив байтов и передать на сервер!
ввод str выполняется при пом

raw_input(). 
Если символьная строка латиница, то
sock.send(str.encode(a)) 
работает норм.,но как только вводится кириллица - codec cant decode byte
Если
sock.send(b'фыв')
-> работает норм. или же передаваемому параметру присваится значение непосредственно, напр
a = 'фыв'  
> тоже работает.
как введя через
raw_input()
переодировать в byte?!

Офлайн

#2 Окт. 18, 2013 17:10:57

bismigalis
Зарегистрирован: 2010-10-02
Сообщения: 449
Репутация: +  47  -
Профиль   Отправить e-mail  

перекодирование кириллицы в байты

raw_input возвращает байты, так что sock.send(str)

Офлайн

#3 Окт. 24, 2013 12:10:16

kristus
Зарегистрирован: 2012-10-27
Сообщения: 40
Репутация: +  0  -
Профиль   Отправить e-mail  

перекодирование кириллицы в байты

Спасибо.Может вопрос не правильно ставлю, но как мне тогда на стороне сервера перекодировать переданный ‘фыв’ , что бы проверить его на совпадение?латиница совпадает

Офлайн

#4 Окт. 24, 2013 17:54:40

Budulianin
От:
Зарегистрирован: 2011-10-18
Сообщения: 1218
Репутация: +  33  -
Профиль   Отправить e-mail  

перекодирование кириллицы в байты

kristus
Спасибо.Может вопрос не правильно ставлю, но как мне тогда на стороне сервера перекодировать переданный ‘фыв’ , что бы проверить его на совпадение?латиница совпадает

'фыва'.decode('cp1251')



Отредактировано Budulianin (Окт. 24, 2013 17:54:48)

Офлайн

#5 Окт. 25, 2013 11:11:39

kristus
Зарегистрирован: 2012-10-27
Сообщения: 40
Репутация: +  0  -
Профиль   Отправить e-mail  

перекодирование кириллицы в байты

Budulianin
'фыва'.decode('cp1251') —-> UnicodeWarning: Unicode equal comparison failed to convert both arguments to Unicode(

Офлайн

#6 Окт. 25, 2013 11:22:13

bismigalis
Зарегистрирован: 2010-10-02
Сообщения: 449
Репутация: +  47  -
Профиль   Отправить e-mail  

перекодирование кириллицы в байты

какие ОСи на серверах?

Офлайн

#7 Окт. 25, 2013 12:18:13

kristus
Зарегистрирован: 2012-10-27
Сообщения: 40
Репутация: +  0  -
Профиль   Отправить e-mail  

перекодирование кириллицы в байты

делаю просто через localhost маленький примерчик запрос - ответ winxp
client

from socket import *
sock=socket(AF_INET,SOCK_STREAM)
sock.connect(('localhost',1808))
a = raw_input() 
sock.send(a)
data=sock.recv(64)#читаем 64-байтовый блок
sock.close()
————————-
serv

from socket import *
sock=socket(AF_INET,SOCK_STREAM)#создаём сокет TCP/IP(в подробности пока не вдаёмся)
sock.bind(('',1808))       #указываем номер порта, к которому ожидается подключение
sock.listen(2)          #указываем максимальное кол-во ожидающих клиентов
while True:
    connection,address=sock.accept()#принимаем входящее поключение
    data=connection.recv(64)#читаем данные блоками по 64 байта
     
    if data=='фыв':
        data = 'бла-бла'
        connection.send("Привет" + " " + data)#отправляем ответ
    connection.close() 

Офлайн

#8 Окт. 25, 2013 12:28:12

bismigalis
Зарегистрирован: 2010-10-02
Сообщения: 449
Репутация: +  47  -
Профиль   Отправить e-mail  

перекодирование кириллицы в байты

Офлайн

#9 Окт. 25, 2013 13:25:10

kristus
Зарегистрирован: 2012-10-27
Сообщения: 40
Репутация: +  0  -
Профиль   Отправить e-mail  

перекодирование кириллицы в байты

Очередной раз убеждаюсь, что программирование на питоне - одно удовольствие

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version