收藏
回答

wx.request流式字符乱码问题

框架类型 问题类型 API/组件名称 终端类型 微信版本 基础库版本
小程序 Bug wx.request/enableChunked 工具 8.0.51 3.6.5

这里怎么转字符都会乱码 但是用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)	
});

回答关注问题邀请回答
收藏

4 个回答

  • ㅤ
    03-20

    试试

    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;

      }

    03-20
    有用
    回复
  • 孙康
    孙康
    2024-12-23

    楼主解决了吗?

    2024-12-23
    有用
    回复
  • 啊?
    啊?
    2024-11-18

    如果不用流式,打印出来是正常的。

    2024-11-18
    有用
    回复
  • Y.
    Y.
    2024-11-15

    试试

    const str = new TextDecoder('utf-8', { fatal: true }).decode(uint8Array);

    2024-11-15
    有用
    回复 1
    • 啊?
      啊?
      2024-11-18
      不行,转出来还是乱码
      2024-11-18
      回复
登录 后发表内容