我该如何解决" UnicodeDecodeError:' ascii'代码无法在psition"中解码字节oxff错误

时间:2016-05-25 09:23:38

标签: python mqtt paho

我一直试图在R-pi中使用mosquitto来发布和分发图像。

这是pub.py

    import paho.mqtt.client as mqtt

    def on_publish(mosq, userdata, mid):
     mosq.disconnect()

    client = mqtt.Client()

    client.connect("test.mosquitto.org", 1883, 60) #error?

    f = open("1.jpg", "rb")
    fileContent = f.read()
    byteArr = bytes(fileContent)
    client.publish("image", byteArr, 0)

    client.loop(5)

然而,有一个错误是" UnicodeDecode错误:' ascii'代码无法在psition"中解码字节oxff我跑的时候。

我认为此错误是由" test.mosquitto.org"第8行。

所以,我试图以其他方式改变它,但它没有用。

最有线的是,当我试图打开一个文本文件并提取一些像这个来源的char和pub / sub时,它才起作用。

    #It does work
    import paho.mqtt.client as mqtt

    def on_public(mosq, userdata, mid):
        mosq.disconnect()

    client = mqtt.Client()

    client.connect("test.mosquitto.org", 1883, 60)

    f=open("text.txt")
    con=f.read(3)
    client.publish("image",con)

    client.loop(5)

我找不到任何差异并解决。

1 个答案:

答案 0 :(得分:1)

看起来你正在运行Python 2.7。

尝试替换

byteArr = bytes(fileContent)

byteArr = bytearray(fileContent)

前者仍然看起来像一个字符串,然后由库传递upayload = payload.encode('utf-8')。如果你有二进制数据不起作用。

您应该做的其他事情是将client.loop(5)替换为client.loop_forever(),否则该文件可能无法发送。

您也没有分配回调功能。