收藏
回答

调用wx.request后,返回值为乱码

框架类型 问题类型 API/组件名称 终端类型 微信版本 基础库版本
小程序 需求 wx.request 工具 6.6.7 2.3.0

调用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)
          },
        });


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

7 个回答

  • 末末
    末末
    2019-11-07

    楼主问题解决了吗?

    2019-11-07
    有用
    回复 1
    • lzq
      lzq
      2019-11-07
      解决了,在服务端使用utf-8编码
      2019-11-07
      回复
  • 小程序开发者
    小程序开发者
    2018-10-12

    微信开发者工具里面一切正常,手机运行时乱码,代码如下:

    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

    用以上地址通过浏览器访问,一切正常!

    2018-10-12
    有用
    回复 2
    • lzq
      lzq
      2018-10-12

       看来你的问题比我的还复杂。我现在在调整后台的编码方式!utf-8。我的后台全是用的GBK,本想用struts2的action作为接口,但是不能轻易将struts2的配置改为utf-8。所以直接用servlet试试了!

      2018-10-12
      回复
    • 小程序开发者
      小程序开发者
      2018-10-12回复lzq

      我的案例其实非常的简单,用现成的接口 https://tcc.taobao.com/cc/json/mobile_tel_segment.htm?tel=17312319729 不涉及服务端编码的问题,我转码也没有用:

      //接口获取数据后如果有中文编码必须使用decodeURI或decodeURIComponent解码  

      decodeURIComponent(res.data);

      decodeURI(res.data);

      2018-10-12
      回复
  • Stars.
    Stars.
    2018-10-12

    返回值乱码 不是后台的事情嘛

    2018-10-12
    有用
    回复
  • 卢霄霄
    卢霄霄
    2018-10-12

    感觉像是你服务器代码用GBK去识别的uft-8

    2018-10-12
    有用
    回复 3
    • lzq
      lzq
      2018-10-12

       服务器端的编码是GBK,如何不修改服务器端编码,在小程序端重新校正编码?

      2018-10-12
      回复
    • 卢霄霄
      卢霄霄
      2018-10-12回复lzq

      小程序默认是utf-8,你把小程序编码也改成GBK试试呢?还是倾向于你去改服务器编码。。

      2018-10-12
      回复
    • lzq
      lzq
      2018-10-12回复卢霄霄

       谢谢

      2018-10-12
      回复
  • lzq
    lzq
    2018-10-12

     

    2018-10-12
    有用
    回复
  • 半寸灰
    半寸灰
    2018-10-12

    浏览器打开连接看看乱码不?


    看看 响应头   Content-Type:  有没有指定编码


    例如--->

    Content-Type:application/json;charset=utf-8


    2018-10-12
    有用
    回复 1
    • lzq
      lzq
      2018-10-12

       浏览器jsp页面调用显示正常。

      我尝试了

      header:{

        'content-type':'application/x-www-form-urlencoded;charset=utf-8',

      },

      method:'POST',

      还是乱码


      2018-10-12
      回复
  • จุ๊บ
    จุ๊บ
    2018-10-12

    看下返回的数据啥样的,顺便尝试下JSON.parse

    2018-10-12
    有用
    回复
登录 后发表内容