石鑫华视觉 发表于 2014-5-14 18:05:14

NI视觉无法识别中文二维码?

本帖最后由 石鑫华视觉 于 2016-6-15 14:51 编辑


上图所示,为在联图网站上在线生成的QR二维码,内容为“石鑫华视觉”。
这图使用NI的视觉软件,如VBAI、视觉助手或VDM开发,读取的数据,都是乱码来着:

视觉助手识别的二维码是代码形式,其值为:
<0xE7><0x9F><0xB3><0xE9><0x91><0xAB><0xE5><0x8D><0x8E><0xE8><0xA7><0x86><0xE8><0xA7><0x89><0xE7><0xBD><0x91>

LabVIEW VISION读取二维码的原始数据是乱码形式。其值如果显示为16进制则为:
E79F B3E9 91AB E58D 8EE8 A786 E8A7 89E7 BD91
再来看下面这张图:

这个图是使用Bartender生成的QR二维码。使用的是二进制模式生成、中文简单纠正模式得到的QR码。这时使用NI软件可以直接读取中文字符:

视觉助手读取二维码效果,其值为:
<0xCA><0xAF><0xF6><0xCE><0xBB><0xAA><0xCA><0xD3><0xBE><0xF5><0xCD><0xF8>
从这里可以看到,两幅图的结果的16进制代码是不一样的。

LabVIEW Vision读取二维码效果

为什么同样内容“石鑫华视觉”,使用不同的生成二维码方式得到的结果不一样呢?
这是由于字符的编码方式引起的。现在国内比较主流的两种编码方式是UTF8和GBK2132。这两种方式,在网页中是很常见的。第一张图使用联图在线生成的二维码,其编码方式使用的是UTF8格式的,这种编码方式 ,一个汉字是由三个字节来表示的,所以其“石鑫华视觉”有18个16进制字符。而后面的Bartender生成的二维码,其编码方式是GBK方式(二进制),这种编码方式一个汉字是由两个字节来表示的,则“石鑫华视觉”只有12个16进制字符。
这时,要想将上面的乱码表示正确,则只需要将其UTF8字符集转换成GBK字符集就可以了。
本贴附件有一个UTF8转GBK的VI,调用了.NET中的一些类。可以完成这个工作。
使用LabVIEW2013版打开:









淡忘 发表于 2014-5-14 18:24:39

支持石鑫华视觉http://shixinhua.com,支持机器视觉论坛http://visionbbs.com。

淡忘 发表于 2014-5-14 18:25:03

啥也不说了,楼主就是给力!石鑫华视觉http://shixinhua.com/camera更给力

淡忘 发表于 2014-5-14 18:25:43

膜拜神贴,后面的请保持队形~支持石鑫华机器视觉网http://shixinhua.com

淡忘 发表于 2014-5-14 18:26:05

看了LZ的帖子,我只想说一句很好很强大!顶石鑫华视觉http://shixinhua.com

淡忘 发表于 2014-5-14 18:26:16

楼主,不论什么情况你一定要hold住!机器视觉http://shixinhua.com一手掌握

chxt47 发表于 2014-6-3 12:03:33

需要的钱太多了

剑道书香 发表于 2015-7-9 22:50:12

校长 hold住

wzdhs 发表于 2015-7-19 10:41:31

下载要金呀?

wzdhs 发表于 2015-7-19 10:57:34

附件能小小金下载会论坛活跃些
页: [1]
查看完整版本: NI视觉无法识别中文二维码?

LabVIEW HALCON图像处理入门教程(24.09)
石鑫华机器视觉与LabVIEW Vision图像处理PDF+视频教程11种全套
《LabVIEW Vision函数实例详解2020-2024》教程-NI Vision所有函数使用方法介绍,基于NI VISION2020,兼容VDM21/22/23/24