QRCode使用Encoding.UTF8編碼時,報錯

QRCode使用Encoding.UTF8編碼時,報錯:c#

 

c#中索引超出數組界限

 

 

 

百度查了下,有位仁兄的帖子跟個人問題同樣,按照帖子的辦法解決了。。。yes!數組

 

 

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

 

已解決,將qrCodeEncoder.QRCodeVersion ;改成0便可測試

 

 

 

查了下緣由,下面的解釋就很好:編碼

 

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

 

QRCODE的QrcodeVersion問題

 

 

爲何要在生成二維碼的時候,判斷字符集的長度要小於128。要知道二維碼信息容量大:可容納多達1850個大寫字母或2710個數字或1108個字節,或500多個漢字,比普通條碼信息容量約高几十倍。若是控制壓縮內容在128個之內的話,那麼二維碼的優點哪裏去了?.net

 
通過屢次測試發現,二維碼所能包含的字符信息量是由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的,高人在民間,瞬間解決問題。
相關文章
相關標籤/搜索