uni-app uni.scanCode识别二维码结果乱码
uni-app uni.scanCode识别二维码结果乱码
操作步骤:
- 使用uni.scanCode识别二维码,返回结果在安卓app上乱码,但是小程序正常,可在dcloud官方app端、微信小程序端的hello uni-app工程中分析错误原因
预期结果:
{
"result": "成品号:X23B67753800002合同号:P3SB991618牌号:P280VK规格:1.2*1130C净重:11670Kg品名:普冷卷表面组别:FB表面结构:麻面生产日期:2023-10-06订单号:熔炼号:X23207842",
"charSet": "ISO8859_1",
"path": "",
"scanType": "QR_CODE",
"errMsg": "scanCode:ok"
}
实际结果:
{
"result": "ウノニキコナ:X23B67753800002\nコマヘャコナ:P3SB991618\nÅÆºÅ:P280VK\n¹æ¸ñ:1.2*1130C\n¾»ÖØ:11670Kg\nÆ·Ãû:ÆÕÀä¾í\n±íÃæ×é±ð:FB\n±íÃæ½á¹¹:ÂéÃæ\nÉú²úÈÕÆÚ:2023-10-06\n¶©µ¥ºÅ:\nÈÛÁ¶ºÅ:X23207842",
"charSet": "ISO8859_1",
"path": "",
"scanType": "QR_CODE",
"errMsg": "scanCode:ok"
}
bug描述:
- 使用uni.scanCode识别二维码,返回结果在安卓app上乱码,但是小程序正常,可在dcloud官方app端、微信小程序端的hello uni-app工程中分析错误原因
环境信息
类别 | 信息 |
---|---|
产品分类 | uniapp/App |
PC开发环境 | Windows |
PC开发环境版本 | 10 |
HBuilderX类型 | 正式 |
HBuilderX版本 | 3.8.12 |
手机系统 | Android |
手机系统版本 | Android 7.0 |
手机厂商 | 华为 |
手机机型 | 安卓 |
页面类型 | vue |
vue版本 | vue3 |
打包方式 | 云端 |
项目创建方式 | HBuilderX |
更多关于uni-app uni.scanCode识别二维码结果乱码的实战教程也可以访问 https://www.itying.com/category-93-b0.html
9 回复
这个bug应该是已经修复了。
alpha貌似是可以了。
如果觉得扫码不准确,可以用支付宝的扫码插件
https://ext.dcloud.net.cn/plugin?id=2636
更多关于uni-app uni.scanCode识别二维码结果乱码的实战教程也可以访问 https://www.itying.com/category-93-b0.html
3.92.2023101106-alpha并没有修复,结果还是如此
回复 4***@qq.com: 用支付宝那个吧,那个也比较精确,,这个原装的,我也就开始用了下,但是好多都识别不出来。支付宝那个也很简单
app上没法用这个库诶
回复 4***@qq.com: 您好 请问的你的问题解决了吗 我现在也遇到同样的问题
这是一个典型的字符编码问题。在安卓平台上,uni.scanCode返回的二维码内容被错误地按照ISO8859_1编码解析,而实际内容应该是UTF-8编码。
解决方案:
- 可以尝试手动转换编码:
const res = await uni.scanCode()
let result = res.result
if(res.charSet === 'ISO8859_1') {
result = decodeURIComponent(escape(result))
}
-
或者检查二维码生成时是否使用了特殊编码,建议统一使用UTF-8编码生成二维码。
-
也可以尝试在调用scanCode时指定编码:
uni.scanCode({
scanType: ['qrCode'],
success: (res) => {
console.log(res)
},
fail: (err) => {
console.error(err)
},
encoding: 'UTF-8' // 尝试指定编码
})