问题分析:
使用 wx.request({url“https://xx”,responseType: "arraybuffer",enableChunked: true}响应回来的数据格式是arraybuffer,需要使用TextDecoder将arraybuffer转化为string。
在微信小程序中,TextDecoder 是 JavaScript 中的一个全局对象,用于将字节数据解码为字符串。然而,微信小程序的 JavaScript 运行环境并不完全等同于浏览器环境,因此某些浏览器中的全局对象(如 TextDecoder)在小程序中可能不可用。
原代码:
直接使用TextDecoder进行转换
真机报错:
解决方案:
不能直接TextDecoder 全局对象,而是使用 text-encoding 这个库实现
实现步骤:
1.安装 text-encoding 库
npm install text-encoding
2.在小程序代码中引入
import { TextDecoder } from 'text-encoding';
3.使用 TextDecoder
const decoder = new TextDecoder('utf-8');
const str = decoder.decode(arrayBuffer);