2016-12-31 4 views
1

Попытка запустить следующий код Python в командной строке: Я использую Python 2.ZMQ Socket TypeError: только строки Unicode Ошибка: есть ли исправление?

import zmq 
context = zmq.Context() 
socket = context.socket(zmq.SUB) 
socket.connect('tcp://0.0.0.0.:6667') 
socket.setsockopt_string(zmq.SUBSCRIBE, 'value') 

и получаю следующее сообщение об ошибке, когда я выполняю:

socket.setsockopt_string(zmq.SUBSCRIBE, value) File "C:\Program Files\Anaconda2\lib\site-packages\zmq\sugar\socket.py", line 192, in >set_string 
raise TypeError("unicode strings only") TypeError: unicode strings only 

вы можете пожалуйста посоветуйте на решение ?

+0

Итак, вы пробовали передать [строку Юникода] (https://docs.python.org/2/howto/unicode.html#unicode-literals-in-python-source-code), чтобы 'Setsockopt_string()'? –

+0

возможно это может помочь: http://stackoverflow.com/questions/4182603/python-how-to-convert-a-string-to-utf-8 – PerunSS

+0

Я пробовал все предлагаемые методы в https: //docs.python .org/2/HOWTO/unicode.html # Юникод-литералы-в-питон-исходный код – stats999

ответ

0

socket.setsockopt_string принимает unicode строка для optval.

если вы только запустить свой код в python2, вы должны использовать

sock.setsockopt(zmq.SUBSCRIBE, b"value")

, если вы хотите, чтобы поддерживать как python2 и python3, вы могли бы использовать

try: 
    sock.setsockopt(zmq.SUBSCRIBE, b'value') 
except TypeError: 
    sock.setsockopt_string(zmq.SUBSCRIBE, b'value') 

Посмотрите на http://pyzmq.readthedocs.io/en/latest/unicode.html

Смежные вопросы