收藏
回答

wx.scanCode二维码扫码出现中文乱码,是什么原因呢,应如何解决?

wx.scanCode({

scanType: 'qrCode'

success: (res) => {

console.log("res.charSet==",res.charSet) //输出为UTF-8

console.log("res.rawData==", res.rawData)

let result = res.result

wx.navigateTo({

url: '../show/show'

success: function (res) {

res.eventChannel.emit('acceptDataFromOpenerPage', { data: result })

}

})

}}

在show.js中解析得到的res,并在前端进行展示

问题是:通过手机端进行真机测试时res中的中文显示为乱码,同一个二维码上个月的时候用微信直接扫二维码显示的还是正常的,这周再用微信扫码就出现了乱码,是否是微信后端进行了什么更改呢?

最后一次编辑于  2020-01-19
回答关注问题邀请回答
收藏

2 个回答

  • 2020-03-04

    我花了一天时间研究这个问题,终于猜对了答案,注意:iphone 对GBK编码的二维码扫码都是乱码的,不论是Iphone自带的二维码软件还是微信的二维码解析器都是乱码的!建议大家在对二维码内容写入的时候用UTF-8的编码,如果改不了编码的话就参考我下面的PHP代码吧。文件编码是UTF-8-Bom。$str 是你们自己的二维码内容,要切记如果你们用微信扫码复制内容,再通过微信助手发送信息,微信会将一些特殊字符转义的,影响下面的代码的执行效果,你们可以在你们真正的小程序应用中测试。可以试试我下面这一段。

    <?php
    ob_clean();//注意这里 UTF-8-Bom文件
    header("Content-Type:text/html; charset=GB2312");
    $str='2001089-033,ÍõÓýÑó,±¬¿î100¶ÏÇÅϵͳƽ¿ª´°£¨´°É´Ò»Ì壩,2020/01/31,2,2320*2230,ÄÚ·ú̼²¬ÒøÍâÉ°ÎÆ»Ò,0,ÎÞ¿îʽ,1,5.1736,º¬µØ̨Ëøλ¿ª1500£¬Í⿪ÏÂÐü´°,200107016,1ºÅ´°Ãµ¹åÔ°5-2-601 һ¥Î÷ÎÔ';
    echo iconv("UTF-8","ISO-8859-1",trim($str));
    exit();
    
    2020-03-04
    有用 1
    回复
  • 是小白啊
    是小白啊
    2020-01-20

    给个码试下?

    2020-01-20
    有用
    回复 4
    • 👻 🌸 ~
      👻 🌸 ~
      2020-01-20
      就是这个码,我之前用微信里面的扫一扫也是可以正常显示的,但现在不行了。


      小程序里面是用wx.scanCode(),在开发者工具里返回的res.charSet是UTF-8,但是我真机调试的时候返回的是GB2312。


      不知道问题是出在哪里
      2020-01-20
      回复
    • 是小白啊
      是小白啊
      2020-01-20回复👻 🌸 ~
      测试了下其他的软件扫码也是返回乱码,建议自查下
      2020-01-20
      回复
    • 👻 🌸 ~
      👻 🌸 ~
      2020-01-20回复是小白啊
      太神奇了,第一张是之前微信扫出来的结果,第二张是今天微信扫码扫出来的结果。。。。
      2020-01-20
      回复
    • 👻 🌸 ~
      👻 🌸 ~
      2020-01-20回复是小白啊
      发现安卓手机扫码成功,但是iPhone会出现乱码,请问微信扫码的接口不支持跨平台吗?
      2020-01-20
      回复
登录 后发表内容
问题标签