小程序 TextDecoder 报错问题

1,679 阅读1分钟

最近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));
})