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版打开:
支持石鑫华视觉http://shixinhua.com,支持机器视觉论坛http://visionbbs.com。 啥也不说了,楼主就是给力!石鑫华视觉http://shixinhua.com/camera更给力 膜拜神贴,后面的请保持队形~支持石鑫华机器视觉网http://shixinhua.com 看了LZ的帖子,我只想说一句很好很强大!顶石鑫华视觉http://shixinhua.com 楼主,不论什么情况你一定要hold住!机器视觉http://shixinhua.com一手掌握 需要的钱太多了 校长 hold住 下载要金呀? 附件能小小金下载会论坛活跃些
页:
[1]