Office中國(guó)論壇/Access中國(guó)論壇

 找回密碼
 注冊(cè)

QQ登錄

只需一步,快速開始

12下一頁(yè)
返回列表 發(fā)新帖
查看: 1469|回復(fù): 17
打印 上一主題 下一主題

[ActiveX] Access生成帶漢字的二維碼問(wèn)題

[復(fù)制鏈接]

點(diǎn)擊這里給我發(fā)消息

跳轉(zhuǎn)到指定樓層
1#
發(fā)表于 2023-10-30 13:43:56 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
最近遇到一個(gè)比較妖的客戶,料號(hào)完全稱不上料號(hào),比較隨性,中文、英文、數(shù)字都用上了。

然后要用到這個(gè)料號(hào)生成條碼和二維碼,給了我們一個(gè)很大的難題。。。。

我以前用的是microsoft BarCode Control 16.0能生成不帶漢字的二維碼,用BarcodeX by fath software只能生成帶漢字的條碼。

后參照Roych大神的貼子,用QRmaker Constrol能生成帶漢字的二維碼(從“富士康跳樓事件”說(shuō)起——再談二維碼QRMaker控件-Access源碼-access培訓(xùn),excel教程,word教程-Office中國(guó)論壇/Access中國(guó)論壇 - Powered by Discuz! (office-cn.net),但是生成的二維碼,掃描出來(lái)的漢字是亂碼。


這個(gè)是沒(méi)有漢字,microsoft BarCode Control 16.0生成的二維碼


這個(gè)是帶有漢字,microsoft BarCode Control 16.0生成不了二維碼


我現(xiàn)在的問(wèn)題是,怎么在Access中能生成帶漢字的二維碼,且通過(guò)掃描能夠識(shí)別出漢字!

先謝過(guò)各位大佬了!





本帖子中包含更多資源

您需要 登錄 才可以下載或查看,沒(méi)有帳號(hào)?注冊(cè)

x
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享 分享淘帖 訂閱訂閱
推薦
發(fā)表于 2023-11-1 23:46:11 | 只看該作者
漢字可能要通過(guò)編碼成UTF8才能被你的設(shè)備識(shí)別。有沒(méi)有一種可能,是你的掃碼設(shè)備識(shí)別的問(wèn)題?

比如,我用支付寶掃碼,全部漢字都識(shí)別出來(lái)了;微信不支持展示,但也識(shí)別出來(lái)了,點(diǎn)擊下方的“復(fù)制文字”可以復(fù)制,貼入文本編輯器(例如備忘錄之類)后正常顯示,華為瀏覽器(P20 Pro,鴻蒙系統(tǒng)3.0)掃碼測(cè)試也顯示正確。
目前美團(tuán)、淘寶、餓了么App均不支持漢字(錯(cuò)誤提示或者該頁(yè)無(wú)法顯示),抖音無(wú)提示。顯示亂碼的是夸克瀏覽器。其它B站、微博之類的APP就不一一測(cè)試了。
由此可見,亂碼問(wèn)題并非完全是控件的原因。因此,想要解決這個(gè)問(wèn)題,需要做兩個(gè)事情:
1、將漢字編碼(例如,UTF8)后再生成二維碼。
2、在設(shè)備端對(duì)編碼字符串進(jìn)行解碼。3、個(gè)人覺(jué)得,相對(duì)容易的做法是,先將里面的漢字用Asc函數(shù)編碼為ASCII碼(一般的值小于0),后面需要解碼時(shí),使用Chr轉(zhuǎn)為漢字。
為了把中英文隔開,建議用for循環(huán)將每個(gè)轉(zhuǎn)碼用特殊符號(hào)連起來(lái),后面解碼時(shí)split一下,再連起來(lái)就好了。
以下是參考函數(shù):
  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
復(fù)制代碼
比如,應(yīng)用場(chǎng)景如下:
假設(shè)二維碼是:-15133|-13625|82|111|121|99|104|,對(duì)應(yīng)的控件是Text0,掃碼后在更新后事件里,讀取Me.Text0的值,然后調(diào)用Decode_Asc解碼,把解碼得到的值作為條件進(jìn)行查詢,或者把解碼后的值添加到表記錄中,這些都可以。
綜上,在設(shè)計(jì)表時(shí),可以考慮2個(gè)字段。一個(gè)是原文字段,另一個(gè)是編碼后用于生成二維碼的字段。

本帖子中包含更多資源

您需要 登錄 才可以下載或查看,沒(méi)有帳號(hào)?注冊(cè)

x

點(diǎn)擊這里給我發(fā)消息

2#
 樓主| 發(fā)表于 2023-10-31 08:55:20 | 只看該作者
有大佬出來(lái)解惑一下嗎
3#
發(fā)表于 2023-10-31 13:50:27 | 只看該作者
搞二維碼都沒(méi)戍功過(guò)
4#
發(fā)表于 2023-10-31 13:50:56 | 只看該作者
總顯示控件沒(méi)注冊(cè)
5#
發(fā)表于 2023-10-31 13:52:11 | 只看該作者
daviee,你文件發(fā)出來(lái)學(xué)習(xí)下

點(diǎn)擊這里給我發(fā)消息

6#
 樓主| 發(fā)表于 2023-10-31 16:56:23 | 只看該作者
灰太郎 發(fā)表于 2023-10-31 13:52
daviee,你文件發(fā)出來(lái)學(xué)習(xí)下

就是版主大神的這個(gè)示例,就能生成二維碼呀,只不過(guò)我要生成帶漢字的,掃描出來(lái)后會(huì)是亂碼。


本帖子中包含更多資源

您需要 登錄 才可以下載或查看,沒(méi)有帳號(hào)?注冊(cè)

x
7#
發(fā)表于 2023-11-1 19:53:34 | 只看該作者
總報(bào)錯(cuò):您沒(méi)有使用該Activex控件許可,己注冊(cè)了,不知什么原因
9#
發(fā)表于 2023-11-1 23:50:16 | 只看該作者
灰太郎 發(fā)表于 2023-11-1 19:53
總報(bào)錯(cuò):您沒(méi)有使用該Activex控件許可,己注冊(cè)了,不知什么原因

可能因?yàn)槟阌玫氖莣in 10家庭版,這個(gè)似乎無(wú)解。目前我的win 11家庭版倒是沒(méi)問(wèn)題。

點(diǎn)擊這里給我發(fā)消息

10#
 樓主| 發(fā)表于 2023-11-3 11:46:56 | 只看該作者
roych 發(fā)表于 2023-11-1 23:46
漢字可能要通過(guò)編碼成UTF8才能被你的設(shè)備識(shí)別。有沒(méi)有一種可能,是你的掃碼設(shè)備識(shí)別的問(wèn)題?

比如, ...

看來(lái)是掃描終端的兼容問(wèn)題,支付寶能夠掃出來(lái),微信不行,謝謝roych指點(diǎn)!
您需要登錄后才可以回帖 登錄 | 注冊(cè)

本版積分規(guī)則

QQ|站長(zhǎng)郵箱|小黑屋|手機(jī)版|Office中國(guó)/Access中國(guó) ( 粵ICP備10043721號(hào)-1 )  

GMT+8, 2024-10-23 08:37 , Processed in 0.127599 second(s), 35 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回復(fù) 返回頂部 返回列表