微信小程序如何把ArrayBuffer 转为字符串啊 20C

自己尝试了一下一个方:工具调试可以运行就说类型Undefined........好坑啊
数据如下:Uint8Array(85)
[123, 34, 100, 97, 116, 97, 84, 121, 112, 101, 34, 58, 34, 115, 101, 115, 115, 105, 111, 110, 95, 100, 97, 116, 97, 95, 116, 121, 112, 101, 95, 116, 101, 115, 116, 34, 44, 34, 101, 114, 114, 67, 111, 100, 101, 34, 58, 49, 44, 34, 100, 97, 116, 97, 34, 58, 123, 34, 110, 97, 109, 101, 34, 58, 34, 229, 188, 160, 228, 184, 137, 34, 44, 34, 97, 103, 101, 34, 58, 34, 50, 48, 34, 125, 125]

let arrayBuffer = res.data;

  if (arrayBuffer instanceof ArrayBuffer){
    let unit8Arr = new Uint8Array(arrayBuffer) ;
    console.log(unit8Arr);
            //下面这个可以但是中文乱码
    console.log(String.fromCharCode.apply(null, unit8Arr ));

            //下面这个调试也可以但是微信预览就不行了报错说TextDecoder  undefined
    var decodeStr = new TextDecoder("utf-8").decode(unit8Arr);
    console.log(decodeStr); 

  }


        另外自己想着转为Blob后解析,调试也可以,但是微信运行也报错Blob  undefined,好坑啊,哪位朋友帮忙给点意见啊,再次先谢过

2个回答

自己找到了解决办法,真机调试可以,中文不乱吗:
let unit8Arr = new Uint8Array(arrayBuffer) ;
let encodedString = String.fromCharCode.apply(null, unit8Arr),
decodedString = decodeURIComponent(escape((encodedString)));//没有这一步中文会乱码
console.log(decodedString);

qq_33298350
山海垂钓客 回复媳妇萌萌哒: TS语言中不能使用escape怎么破?
6 个月之前 回复
u011189360
媳妇萌萌哒 的确是这样子的,我网上搜索了好久终于解决了,妈的,真坑解码
11 个月之前 回复

转为unicode编码序列再decodeURIComponent搞定

     let arrayBuffer = [123, 34, 100, 97, 116, 97, 84, 121, 112, 101, 34, 58, 34, 115, 101, 115, 115, 105, 111, 110, 95, 100, 97, 116, 97, 95, 116, 121, 112, 101, 95, 116, 101, 115, 116, 34, 44, 34, 101, 114, 114, 67, 111, 100, 101, 34, 58, 49, 44, 34, 100, 97, 116, 97, 34, 58, 123, 34, 110, 97, 109, 101, 34, 58, 34, 229, 188, 160, 228, 184, 137, 34, 44, 34, 97, 103, 101, 34, 58, 34, 50, 48, 34, 125, 125];
    let s = decodeURIComponent(arrayBuffer.map(function (value, index) { return '%' + value.toString(16) }).join(''));
    console.log(s)
showbo
支付宝加好友偷能量挖 没注意。。你的是ArrayBuffer,不是数组。。自己遍历了
一年多之前 回复
showbo
支付宝加好友偷能量挖 回复qq_33802316: 原理和我这个一样,只是用escape代替了而已
一年多之前 回复
showbo
支付宝加好友偷能量挖 回复qq_33802316: 手机测试也没有问题吧,你的代码原来和我这个一样,不行只能说你微信版本太低,不支持数组的map操作,只能自己遍历了
一年多之前 回复
qq_33802316
qq_33802316 兄弟这个不行的
一年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!