gpt4 book ai didi

python - 如何修复UnicodeDecodeError

转载 作者:行者123 更新时间:2023-12-03 00:28:07 25 4
gpt4 key购买 nike

我正在编写asyncio web-sockets应用程序。我有我的客户端和服务器正在交换json格式的数据。有时,作为对客户端的响应,服务器返回音频数据。我将这些数据编码为base64,然后解码为utf-8。但是,当我发送带有音频数据的json时,网络套接字客户端无法解码该数据并引发“UnicodeDecodeError”

这就是我从服务器发送数据的方式


. . .

# audio_data is binary data from ".wav" file
response = {
'status': 'success',
'data': base64.b64encode(audio_data).decode('UTF-8')
}
# send data throught socket
await websocket.send(json.dumps(response))

. . .


接收发送数据的代码(这是我收到的错误)

. . .

# Receive data from web-socket server
response = await websocket.recv()

. . .


我收到的错误
Traceback (most recent call last):
File ".../env/lib/python3.6/site-packages/websockets/protocol.py", line 674, in transfer_data
message = yield from self.read_message()
File ".../env/lib/python3.6/site-packages/websockets/protocol.py", line 757, in read_message
return frame.data.decode('utf-8') if text else frame.data
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xf0 in position 51872: invalid continuation byte

最佳答案

您的框架最有可能希望您输出bytes,因此:

await wbsocket.send(json.dumps(...).encode(...))

尼特夫妇:

由于base64 的字符集受限制,可以使用“ascii”和“utf-8”解码
  • b64encode 默认情况下,
  • json.dumps会转义unicode,因此.encode("utf-8").encode("ascii")应该产生相同的结果
  • websockets文档未指定输入期望和输出产生str还是bytes ...
  • 关于python - 如何修复UnicodeDecodeError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54237041/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com