QRCode使用Encoding.UTF8编码时,报错

可紊 提交于 2020-01-07 10:33:03

【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>

QRCode使用Encoding.UTF8编码时,报错:

 

c#中索引超出数组界限

 

 

 

百度查了下,有位仁兄的帖子跟我的问题一样,按照帖子的办法解决了。。。yes!

 

 

http://bbs.csdn.net/topics/391847311

 

已解决,将qrCodeEncoder.QRCodeVersion ;改为0即可

 

 

 

查了下原因,下面的解释就很好:

 

http://blog.csdn.net/wadyloo/article/details/8787502

 

QRCODE的QrcodeVersion问题

 

 

为什么要在生成二维码的时候,判断字符集的长度要小于128。要知道二维码信息容量大:可容纳多达1850个大写字母或2710个数字或1108个字节,或500多个汉字,比普通条码信息容量约高几十倍。如果控制压缩内容在128个以内的话,那么二维码的优势哪里去了?

 
经过多次测试发现,二维码所能包含的字符信息量是由QrcodeVersion的设置值来决定的。将QrcodeVersion设置到20的时候,就已经可以容乃到300多个字节。
 
如果你以为这样就解决了问题的话,那么就错了,嘿嘿。如果只是修改了QrcodeVersion的值,解决的仅仅是字符集容量的问题,可是这样生成的图片无法解码。可是把字符容量控制在128个以内的时候,就可以正常的解码。难道日本人写的东西会有这么多的问题,网上搜来搜去,只能找到几个难兄难弟,但是没有找到解决的方法。
 
无意中打开生成的图片一看才发现了问题,生成的二维码图片的大小是会根据所压缩的信息内容而变化的,网上提供的例子是通过new BufferedImage(139, 139, BufferedImage.TYPE_INT_RGB);来创建图像对象的,默认的情况下图片的大小是139*139,这个大小是比较适合QrcodeVersion为7的情况。将图片的大小设置到300*300就可以很好的支持QrcodeVersion为20的情况,并且可以正常的解码。
 
QrcodeVersion的范围值是0-40,0的含义是表示压缩的信息量将会根据实际传入值确定,只有最高上限的控制,而且图片的大小将会根据信息量自动缩放。1-40的范围值,则有固定的信息量上限,而且图片的大小会固定在一个大小上,不会根据信息量的多少而变化。
 
以上就是在应用QRCode这个工具时遇到的一些问题,留档备案。
 
以上都是我copy的,高人在民间,瞬间解决问题。
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!