2016-12-31 30 views
1

试图运行在命令提示符下Python代码: 我使用Python 2ZMQ套接字类型错误:仅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

那么,你有没有试过将[Unicode字符串](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#Unicode的文字合蟒源代码 – 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