如何修复UnicodeCodeError:&x27;utf-32-le';编解码器可以';尝试在节点红色中运行python3函数时,t解码位置16-19中的字节

如何修复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"

我试图运行一个空的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", 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)