最近chatgpt的小程序太火 导致遇到这个问题
关于微信小程序 TextDecoder 真机报错的问题
- 网上说官方应该不支持
- 注意
模拟器是没问题的真机上会报错
new TextEncoding.TextDecoder("utf-8").decode(new Uint8Array(...));
解决方案
- 安装插件 其他方法试过 不管用
pnpm install text-encoding-shim
import * as TextEncoding from "text-encoding-shim";
new TextEncoding.TextDecoder("utf-8").decode()
完美解决
- 附小程序流式数据请求
export const StreamRequest = (data) => {
return new Promise((resolve, reject) => {
const allResponse = uni.request({
url: BASE_URL, //仅为示例,并非真实接口地址。
data,
header: {
Accept: "text/event-stream",
"Content-Type": "application/json",
Connection: "keep-alive",
token: null,
},
method: "POST",
responseType: "arraybuffer",
enableQuic: true,
enableCache: true,
enableChunked: true, // 开启流传输
success: (response) => {
resolve(response);
},
fail: (err) => {
reject(err);
},
});
resolve(allResponse);
});
};
- 使用
const requestTask = await StreamRequest(data);
requestTask.onChunkReceived((res) => {
const decoder = new TextEncoding.TextDecoder("utf-8");
const text = decoder.decode(new Uint8Array(res.data));
})