uni-app GET请求网页返回值部分乱码问题

uni-app GET请求网页返回值部分乱码问题

产品分类 PC开发环境操作系统 PC开发环境操作系统版本号 HBuilderX类型 HBuilderX版本号 浏览器平台 浏览器版本 项目创建方式
uniapp/H5 Windows Windows 10 专业版 21H1 正式 3.1.12 Chrome 版本 91.0.4472.77(正式版本) (64 位) HBuilderX

示例代码:

https 跨越配置

"h5" : {  
    "devServer" : {  
        "port" : 8081,  
        "https" : true,  
        "disableHostCheck" : true,  
        "proxy" : {  
            "/xbiquge" : {  
                "target" : "https://www.xbiquge.la",  
                "changeOrigin" : true,  
                "secure" : false,  
                "pathRewrite" : {  
                    "^/xbiquge" : ""  
                }  
            }  
        }  
    }  
}

执行代码

uni.request({  
    url: "/xbiquge/1/1864/",  
    success(res) {  
        console.log("success 第一个请求",res);  
                uni.request({  
            url: "/xbiquge/10/10489/",  
            success(res) {  
                console.log("success 第二个请求",res);  
            },  
            fail(res) {  
                console.log("fail",res);  
            }  
        })  
    },  
    fail(res) {  
        console.log("fail",res);  
    }  
})

### 操作步骤:


代码示例里面

预期结果:

第一个请求正常,第二请求正常


### 实际结果:


第一个请求乱码

bug描述:

GET请求网页,返回值部分不乱码,部分乱码。 APP 页面直接卡死,未知状态是否正常。 POSTMAN 测试请求URL 一切正常。


更多关于uni-app GET请求网页返回值部分乱码问题的实战教程也可以访问 https://www.itying.com/category-93-b0.html

4 回复

个人怀疑 源网站编码问题

更多关于uni-app GET请求网页返回值部分乱码问题的实战教程也可以访问 https://www.itying.com/category-93-b0.html


我测试过postman没有问题,换了另外一个网站也出现相同的问题。

刚测试了php 请求结果也是正常的

乱码问题通常是由于字符编码不一致导致的。在uni-app中发起GET请求时,如果服务器返回的字符编码与前端解析方式不匹配,就会出现部分内容乱码的情况。

从你的配置来看,使用了代理请求笔趣阁网站,该网站可能使用了GBK/GB2312编码,而uni-app默认使用UTF-8编码解析响应数据。

解决方案:

  1. 设置响应数据类型为arraybuffer,然后手动转换编码:
uni.request({
    url: "/xbiquge/1/1864/",
    responseType: 'arraybuffer',
    success(res) {
        // 将ArrayBuffer转换为GBK编码的文本
        let text = new TextDecoder('gbk').decode(res.data);
        console.log("success 第一个请求", text);
    }
});
  1. 如果上述方法不生效,可以使用TextEncoding polyfill库进行编码转换:
import { TextDecoder } from 'text-encoding';

uni.request({
    url: "/xbiquge/1/1864/",
    responseType: 'arraybuffer',
    success(res) {
        const decoder = new TextDecoder('gbk');
        const text = decoder.decode(new Uint8Array(res.data));
        console.log("success 第一个请求", text);
    }
});
回到顶部