设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

12下一页
返回列表 发新帖
查看: 793|回复: 17
打印 上一主题 下一主题

[ActiveX] Access生成带汉字的二维码问题

[复制链接]

点击这里给我发消息

跳转到指定楼层
1#
发表于 2023-10-30 13:43:56 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
最近遇到一个比较妖的客户,料号完全称不上料号,比较随性,中文、英文、数字都用上了。

然后要用到这个料号生成条码和二维码,给了我们一个很大的难题。。。。

我以前用的是microsoft BarCode Control 16.0能生成不带汉字的二维码,用BarcodeX by fath software只能生成带汉字的条码。

后参照Roych大神的贴子,用QRmaker Constrol能生成带汉字的二维码(从“富士康跳楼事件”说起——再谈二维码QRMaker控件-Access源码-access培训,excel教程,word教程-Office中国论坛/Access中国论坛 - Powered by Discuz! (office-cn.net),但是生成的二维码,扫描出来的汉字是乱码。


这个是没有汉字,microsoft BarCode Control 16.0生成的二维码


这个是带有汉字,microsoft BarCode Control 16.0生成不了二维码


我现在的问题是,怎么在Access中能生成带汉字的二维码,且通过扫描能够识别出汉字!

先谢过各位大佬了!





本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
推荐
发表于 2023-11-1 23:46:11 | 只看该作者
汉字可能要通过编码成UTF8才能被你的设备识别。有没有一种可能,是你的扫码设备识别的问题?

比如,我用支付宝扫码,全部汉字都识别出来了;微信不支持展示,但也识别出来了,点击下方的“复制文字”可以复制,贴入文本编辑器(例如备忘录之类)后正常显示,华为浏览器(P20 Pro,鸿蒙系统3.0)扫码测试也显示正确。
目前美团、淘宝、饿了么App均不支持汉字(错误提示或者该页无法显示),抖音无提示。显示乱码的是夸克浏览器。其它B站、微博之类的APP就不一一测试了。
由此可见,乱码问题并非完全是控件的原因。因此,想要解决这个问题,需要做两个事情:
1、将汉字编码(例如,UTF8)后再生成二维码。
2、在设备端对编码字符串进行解码。3、个人觉得,相对容易的做法是,先将里面的汉字用Asc函数编码为ASCII码(一般的值小于0),后面需要解码时,使用Chr转为汉字。
为了把中英文隔开,建议用for循环将每个转码用特殊符号连起来,后面解码时split一下,再连起来就好了。
以下是参考函数:
  1. Function Encode_Asc(ByVal strEncode As String) As String
  2.     Dim i As Long
  3.     Dim strR As String
  4.     For i = 1 To Len(strEncode)
  5.         strR = strR & Asc(Mid(strEncode, i, 1)) & "|"
  6.     Next
  7.     Encode_Asc = strR
  8. End Function


  9. Function Decode_Asc(ByVal strDecode As String) As String
  10.     Dim i As Long
  11.     Dim strR As String
  12.     Dim strArr
  13.     strArr = Split(strDecode, "|")
  14.    
  15.     For i = 0 To UBound(strArr) - 1
  16.         strR = strR & Chr(CLng(strArr(i)))
  17.     Next
  18.     Decode_Asc = strR
  19. End Function

  20. Sub test()
  21.     Debug.Print Encode_Asc("你是Roych")
  22.     '返回-15133|-13625|82|111|121|99|104|
  23.     Debug.Print Decode_Asc("-15133|-13625|82|111|121|99|104|")
  24.     '返回你是Roych
  25. End Sub
复制代码
比如,应用场景如下:
假设二维码是:-15133|-13625|82|111|121|99|104|,对应的控件是Text0,扫码后在更新后事件里,读取Me.Text0的值,然后调用Decode_Asc解码,把解码得到的值作为条件进行查询,或者把解码后的值添加到表记录中,这些都可以。
综上,在设计表时,可以考虑2个字段。一个是原文字段,另一个是编码后用于生成二维码的字段。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 1 反对 0

使用道具 举报

点击这里给我发消息

2#
 楼主| 发表于 2023-10-31 08:55:20 | 只看该作者
有大佬出来解惑一下吗
3#
发表于 2023-10-31 13:50:27 | 只看该作者
搞二维码都没戍功过
4#
发表于 2023-10-31 13:50:56 | 只看该作者
总显示控件没注册
5#
发表于 2023-10-31 13:52:11 | 只看该作者
daviee,你文件发出來学习下

点击这里给我发消息

6#
 楼主| 发表于 2023-10-31 16:56:23 | 只看该作者
灰太郎 发表于 2023-10-31 13:52
daviee,你文件发出來学习下

就是版主大神的这个示例,就能生成二维码呀,只不过我要生成带汉字的,扫描出来后会是乱码。


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
7#
发表于 2023-11-1 19:53:34 | 只看该作者
总报错:您没有使用该Activex控件许可,己注册了,不知什么原因
9#
发表于 2023-11-1 23:50:16 | 只看该作者
灰太郎 发表于 2023-11-1 19:53
总报错:您没有使用该Activex控件许可,己注册了,不知什么原因

可能因为你用的是win 10家庭版,这个似乎无解。目前我的win 11家庭版倒是没问题。

点击这里给我发消息

10#
 楼主| 发表于 2023-11-3 11:46:56 | 只看该作者
roych 发表于 2023-11-1 23:46
汉字可能要通过编码成UTF8才能被你的设备识别。有没有一种可能,是你的扫码设备识别的问题?

比如, ...

看来是扫描终端的兼容问题,支付宝能够扫出来,微信不行,谢谢roych指点!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-4-28 14:13 , Processed in 0.086076 second(s), 35 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表