Paho-MQTTでUnicodeDecodeErrorが起こった話→bytearrayを使う
File "/usr/local/lib/python2.7/dist-packages/paho/mqtt/client.py", line 1693, in _send_publish upayload = payload.encode('utf-8') UnicodeDecodeError: 'ascii' codec can't decode byte 0xaf in position 0: ordinal not in range(128)
なぜかペイロードをASCIIとみなしてUTF-8に変換しようとするので、整数値をstruct.packでバイナリにしているようなケースに「運悪くASCII以外の文字になった時だけ実行時例外が起こる」という罠にはまった。
-
- -
paho-mqttのpythonクライアントがstringしか扱わないのでバイナリを使いたい場合は、 bytearrayを使う、とかいう話がここに
https://t.co/zmK4raDlJA
— shirou - しろう (@r_rudi) 2015, 10月 21
# single('\xfe') # NG single(bytearray('\xfe')) # OK
なるほど、bytearrayにすればOKでした。