如何修复UnicodeCodeError:&x27;utf-32-le';编解码器可以';尝试在节点红色中运行python3函数时,t解码位置16-19中的字节
我试图运行一个空的python3函数(其中只有如何修复UnicodeCodeError:&x27;utf-32-le';编解码器可以';尝试在节点红色中运行python3函数时,t解码位置16-19中的字节,python,json,python-3.x,node-red,Python,Json,Python 3.x,Node Red,我试图运行一个空的python3函数(其中只有return msg)和节点“node-red-contrib-python3-function”,但是我得到了标题中提到的错误。我已经安装了Python 3.7.3 atm。收到的错误消息为(重复10次): 频道所在位置: channel = None if sys.version_info[0]<3: channel = os.fdopen(3, "r+") else: channel = os.fdopen(3, "rb"
return msg
)和节点“node-red-contrib-python3-function”,但是我得到了标题中提到的错误。我已经安装了Python 3.7.3 atm。收到的错误消息为(重复10次):
频道所在位置:
channel = None
if sys.version_info[0]<3:
channel = os.fdopen(3, "r+")
else:
channel = os.fdopen(3, "rb", buffering=0)
这里的问题是来自
channel.readline()
的返回对象不是纯JSON。它前面有几个字节,不能转换回utf-32编码。所以,看看是谁在向频道发送信息,我无法更改发送到该频道的任何内容。我不知道node red是如何以这种方式工作的。如果可能的话,我想我最好的办法是删除“{”前面的字节。这里的问题是channel.readline()中的返回对象
不是纯JSON。它前面有几个字节,无法转换回utf-32编码。因此,请查看向该频道发送消息的人。我无法更改发送到该频道的任何内容。我不知道node red是如何以这种方式工作的。我想我最好的办法是尝试在如果可能的话。
channel = None
if sys.version_info[0]<3:
channel = os.fdopen(3, "r+")
else:
channel = os.fdopen(3, "rb", buffering=0)
class Node(object):
def __init__(self, msgid, channel):
self.__msgid = msgid
self.__channel = channel
def send(self, msg):
msg = Msg(Msg.SEND, msg, self.__msgid)
self.send_to_node(msg)
def log(self, *args):
msg = Msg(Msg.LOG, args, self.__msgid)
self.send_to_node(msg)
def warn(self, *args):
msg = Msg(Msg.WARN, args, self.__msgid)
self.send_to_node(msg)
def error(self, *args):
msg = Msg(Msg.ERROR, args, self.__msgid)
self.send_to_node(msg)
def status(self, *args):
msg = Msg(Msg.STATUS, args, self.__msgid)
self.send_to_node(msg)
def send_to_node(self, msg):
m = msg.dumps()
if sys.version_info[0]>2:
m = m.encode("utf-8")
self.__channel.write(m)