这里怎么转字符都会乱码 但是用postman请求就没一点儿问题
const requestTask = wx.request({
url: 'https://ark.cn-beijing.volces.com/api/v3/bots/chat/completions',
method: 'POST',
enableChunked: true,
responseType: "arraybuffer", // 以 ArrayBuffer 格式接收数据
data: {
"model": '',
"messages": [{
"role": "user",
"content": "写一个文章"
}],
"stream": true,
},
header: {
'content-type': 'application/json',
'Authorization': 'Bearer xxx'
},
success: response => {},
fail: error => {}
});
requestTask.onChunkReceived((response) => {
const arrayBuffer = response.data;
const uint8Array = new Uint8Array(arrayBuffer);
const str = new TextDecoder('utf-8').decode(uint8Array);
console.log('str:',str)
});
试试
Utf8ArrayToStr(new Uint8Array(res.data))
Utf8ArrayToStr(array) {
var out, i, len, c;
var char2, char3;
out = "";
len = array.length;
i = 0;
while (i < len) {
c = array[i++];
switch (c >> 4) {
case 0:
case 1:
case 2:
case 3:
case 4:
case 5:
case 6:
case 7:
// 0xxxxxxx
out += String.fromCharCode(c);
break;
case 12:
case 13:
// 110x xxxx 10xx xxxx
char2 = array[i++];
out += String.fromCharCode(((c & 0x1F) << 6) | (char2 & 0x3F));
break;
case 14:
// 1110 xxxx 10xx xxxx 10xx xxxx
char2 = array[i++];
char3 = array[i++];
out += String.fromCharCode(((c & 0x0F) << 12) |
((char2 & 0x3F) << 6) |
((char3 & 0x3F) << 0));
break;
}
}
return out;
}
楼主解决了吗?
如果不用流式,打印出来是正常的。
试试
const str = new TextDecoder('utf-8', { fatal: true }).decode(uint8Array);