|
汉字可能要通过编码成UTF8才能被你的设备识别。有没有一种可能,是你的扫码设备识别的问题?
比如,我用支付宝扫码,全部汉字都识别出来了;微信不支持展示,但也识别出来了,点击下方的“复制文字”可以复制,贴入文本编辑器(例如备忘录之类)后正常显示,华为浏览器(P20 Pro,鸿蒙系统3.0)扫码测试也显示正确。
目前美团、淘宝、饿了么App均不支持汉字(错误提示或者该页无法显示),抖音无提示。显示乱码的是夸克浏览器。其它B站、微博之类的APP就不一一测试了。
由此可见,乱码问题并非完全是控件的原因。因此,想要解决这个问题,需要做两个事情:
1、将汉字编码(例如,UTF8)后再生成二维码。
2、在设备端对编码字符串进行解码。3、个人觉得,相对容易的做法是,先将里面的汉字用Asc函数编码为ASCII码(一般的值小于0),后面需要解码时,使用Chr转为汉字。
为了把中英文隔开,建议用for循环将每个转码用特殊符号连起来,后面解码时split一下,再连起来就好了。
以下是参考函数:
- Function Encode_Asc(ByVal strEncode As String) As String
- Dim i As Long
- Dim strR As String
- For i = 1 To Len(strEncode)
- strR = strR & Asc(Mid(strEncode, i, 1)) & "|"
- Next
- Encode_Asc = strR
- End Function
- Function Decode_Asc(ByVal strDecode As String) As String
- Dim i As Long
- Dim strR As String
- Dim strArr
- strArr = Split(strDecode, "|")
-
- For i = 0 To UBound(strArr) - 1
- strR = strR & Chr(CLng(strArr(i)))
- Next
- Decode_Asc = strR
- End Function
- Sub test()
- Debug.Print Encode_Asc("你是Roych")
- '返回-15133|-13625|82|111|121|99|104|
- Debug.Print Decode_Asc("-15133|-13625|82|111|121|99|104|")
- '返回你是Roych
- End Sub
复制代码 比如,应用场景如下:
假设二维码是:-15133|-13625|82|111|121|99|104|,对应的控件是Text0,扫码后在更新后事件里,读取Me.Text0的值,然后调用Decode_Asc解码,把解码得到的值作为条件进行查询,或者把解码后的值添加到表记录中,这些都可以。
综上,在设计表时,可以考虑2个字段。一个是原文字段,另一个是编码后用于生成二维码的字段。
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
|