Office中国论坛/Access中国论坛

标题: Access生成带汉字的二维码问题 [打印本页]

作者: daviee    时间: 2023-10-30 13:43
标题: Access生成带汉字的二维码问题
最近遇到一个比较妖的客户,料号完全称不上料号,比较随性,中文、英文、数字都用上了。

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

我以前用的是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),但是生成的二维码,扫描出来的汉字是乱码。
[attach]64698[/attach]

这个是没有汉字,microsoft BarCode Control 16.0生成的二维码
[attach]64699[/attach]

这个是带有汉字,microsoft BarCode Control 16.0生成不了二维码
[attach]64700[/attach]

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

先谢过各位大佬了!






作者: daviee    时间: 2023-10-31 08:55
有大佬出来解惑一下吗
作者: 灰太郎    时间: 2023-10-31 13:50
搞二维码都没戍功过
作者: 灰太郎    时间: 2023-10-31 13:50
总显示控件没注册
作者: 灰太郎    时间: 2023-10-31 13:52
daviee,你文件发出來学习下
作者: daviee    时间: 2023-10-31 16:56
灰太郎 发表于 2023-10-31 13:52
daviee,你文件发出來学习下

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

[attach]64701[/attach]

作者: 灰太郎    时间: 2023-11-1 19:53
总报错:您没有使用该Activex控件许可,己注册了,不知什么原因
作者: roych    时间: 2023-11-1 23:46
汉字可能要通过编码成UTF8才能被你的设备识别。有没有一种可能,是你的扫码设备识别的问题?
[attach]64702[/attach]
比如,我用支付宝扫码,全部汉字都识别出来了;微信不支持展示,但也识别出来了,点击下方的“复制文字”可以复制,贴入文本编辑器(例如备忘录之类)后正常显示,华为浏览器(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个字段。一个是原文字段,另一个是编码后用于生成二维码的字段。


作者: roych    时间: 2023-11-1 23:50
灰太郎 发表于 2023-11-1 19:53
总报错:您没有使用该Activex控件许可,己注册了,不知什么原因

可能因为你用的是win 10家庭版,这个似乎无解。目前我的win 11家庭版倒是没问题。
作者: daviee    时间: 2023-11-3 11:46
roych 发表于 2023-11-1 23:46
汉字可能要通过编码成UTF8才能被你的设备识别。有没有一种可能,是你的扫码设备识别的问题?

比如, ...

看来是扫描终端的兼容问题,支付宝能够扫出来,微信不行,谢谢roych指点!
作者: daviee    时间: 2023-11-3 13:53
roych 发表于 2023-11-1 23:50
可能因为你用的是win 10家庭版,这个似乎无解。目前我的win 11家庭版倒是没问题。

Roych大神对microsoft BarCode Control 16.0 这个有研究么?这个当有汉字时,生成不了二维码
作者: roych    时间: 2023-11-4 01:52
daviee 发表于 2023-11-3 11:46
看来是扫描终端的兼容问题,支付宝能够扫出来,微信不行,谢谢roych指点!

按草料二维码网站的说法,

因微信规则调整,含中文的静态码使用微信扫描后
。全网的二维码生成器都是这样。

[attach]64703[/attach]
但不代表无法识别
你点击下方的按钮,然后打开文本编辑器,例如短信、备忘录之类,看看能不能粘贴上去?反正我测试是没问题的。
顺带回答一下,另一个无解的问题:[attach]64704[/attach]
这个是微软技术社区代理斑竹的回复,希望对你有所帮助(放弃治疗
如果是扫描枪识别录入信息,其实可以按我前面说的来做。二维码用ASCII码,识别后再通过窗体事件转为中文存入数据库。

以前我们公司是这么干的:
1、开单后打印包含条码的订单。
2、操作(例如,录入订单完成结果)时打开订单软件。
3、点击按钮进入录入信息界面,激活录入订单号的文本框。
4、通过扫描枪将条码录入到系统。
按这个流程,你只需要修改第1步和补充第5步。
1、将包含汉字的二维码转为ASCII码。
4、将扫码得到的ASCII码转为汉字。
5、将汉字录入系统。
扫码过程,本质上属于录入信息自动化。因此,你只需要在文本框里的更新后事件里进行转码即可。
也就是说,以前你录入的是汉字,现在你录入的ASCII码,后台帮你把这个ACII码转为汉字再录入。有啥问题么?

作者: daviee    时间: 2023-11-6 14:31
roych 发表于 2023-11-4 01:52
按草料二维码网站的说法,
因微信规则调整,含中文的静态码使用微信扫描后。全网的二维码生成器都是这样 ...

按您的这个方法,和我们的流程不太一样,你这个是自己公司内部的系统处理问题,就是把带汉字的内容生成ACSII码,生成二维码,然后再把扫出来的ACCII码转换成汉字。

我现在流程,前面一部把汉字转化成ACSII码,这部分可以在公司系统解决,后面是因为生成的二维码在标签上,标签随物品流转到客户那里了,客户的系统不一定能把ASCII 码转换成汉字,只会扫出来的是转换后的ASCII码了。

目前microsoft BarCode Control 16.0这个控件是无法生成带汉字的二维码,但是很奇怪,一维码(条码)竟然能生成带汉字的。
作者: daviee    时间: 2023-11-6 14:50


这位版主的建议,从其它地方生成带汉字的二维码,再插入,这个就很麻烦了,失去了Access数据管理的功能了。

目前我是在access报表中,关联到查询字段,自动生成二维码的
[attach]64705[/attach]

作者: accben    时间: 2023-12-1 09:39
不能使用ACCESS自带的,论坛里有支持中文二维码的控件。
作者: smileyoufu    时间: 2023-12-4 17:56
http://www.rubylong.cn/
用上面链接的锐浪报表,支持各种码
作者: daviee    时间: 2023-12-13 16:50
smileyoufu 发表于 2023-12-4 17:56
http://www.rubylong.cn/
用上面链接的锐浪报表,支持各种码

这个锐浪报表确实牛,中文条码,二维码都能生成
[attach]64720[/attach]

作者: 灰太郎    时间: 2023-12-25 10:48
@daviee,是哪个控件,你的例子可以分享下吗?谢谢




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3