调用wx.request后,返回值为乱码。如何解决?能否对返回值进行再编码,如果不能如何解决?
我的代码片断如下:
wx.request({ url: 'https://省略隐藏.../miniProgramInterface/login.action' , data:{ user: '1a用户' , password: '2b密码' , code: '3c代码' , }, header:{ 'content-type' : 'application/x-www-form-urlencoded' , }, method: 'POST' , success: function (res){ console.log(res.data) }, }); |
楼主问题解决了吗?
微信开发者工具里面一切正常,手机运行时乱码,代码如下:
data: {
phoNo: '',
area: ''
},
wx.request({
url: 'https://tcc.taobao.com/cc/json/mobile_tel_segment.htm?tel=' + this.data.phoNo,
header: {
'content-type': 'application/json'
},
//以下也试过,不行
//header: { 'Content-Type': 'application/json;charset=UTF-8;' },
//header: {'Content-Type': 'application/x-www-form-urlencoded;charset=GB-2312'},
//header: {'Content-Type': 'application/x-www-form-urlencoded;charset=GBK'},
success(res) {
console.log(res.data)
self.setData({
area: res.data
});
}
})
https://tcc.taobao.com/cc/json/mobile_tel_segment.htm?tel=17312319729
用以上地址通过浏览器访问,一切正常!
看来你的问题比我的还复杂。我现在在调整后台的编码方式!utf-8。我的后台全是用的GBK,本想用struts2的action作为接口,但是不能轻易将struts2的配置改为utf-8。所以直接用servlet试试了!
我的案例其实非常的简单,用现成的接口 https://tcc.taobao.com/cc/json/mobile_tel_segment.htm?tel=17312319729 不涉及服务端编码的问题,我转码也没有用:
//接口获取数据后如果有中文编码必须使用decodeURI或decodeURIComponent解码
decodeURIComponent(res.data);
decodeURI(res.data);
返回值乱码 不是后台的事情嘛
感觉像是你服务器代码用GBK去识别的uft-8
服务器端的编码是GBK,如何不修改服务器端编码,在小程序端重新校正编码?
小程序默认是utf-8,你把小程序编码也改成GBK试试呢?还是倾向于你去改服务器编码。。
谢谢
浏览器打开连接看看乱码不?
看看 响应头 Content-Type: 有没有指定编码
例如--->
Content-Type:application/json;charset=utf-8
浏览器jsp页面调用显示正常。
我尝试了
header:{
'content-type'
:
'application/x-www-form-urlencoded;charset=utf-8'
,
},
method:
'POST'
,
还是乱码
看下返回的数据啥样的,顺便尝试下JSON.parse