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 回复
我测试过postman没有问题,换了另外一个网站也出现相同的问题。
刚测试了php 请求结果也是正常的
乱码问题通常是由于字符编码不一致导致的。在uni-app中发起GET请求时,如果服务器返回的字符编码与前端解析方式不匹配,就会出现部分内容乱码的情况。
从你的配置来看,使用了代理请求笔趣阁网站,该网站可能使用了GBK/GB2312编码,而uni-app默认使用UTF-8编码解析响应数据。
解决方案:
- 设置响应数据类型为
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);
}
});
- 如果上述方法不生效,可以使用
TextEncodingpolyfill库进行编码转换:
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);
}
});

