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中的中文显示为乱码,同一个二维码上个月的时候用微信直接扫二维码显示的还是正常的,这周再用微信扫码就出现了乱码,是否是微信后端进行了什么更改呢?
我花了一天时间研究这个问题,终于猜对了答案,注意: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();
给个码试下?
小程序里面是用wx.scanCode(),在开发者工具里返回的res.charSet是UTF-8,但是我真机调试的时候返回的是GB2312。
不知道问题是出在哪里