我正在使用http://davidshimjs.github.io/qrcodejs/为事件生成QR代码,但是当我尝试从下面显示的字符串生成代码时,我收到此错误错误:代码长度溢出。 (1716> 1056)即可。我发现当我将correctLevel : QRCode.CorrectLevel.H
更改为中等时,它可以正常工作。当我删除DESCRIPTION或字符串的其他部分时,它也有效。
你能解释一下这些限制是如何工作的吗?当代码是从用户的输入生成代码时它应该如何设置(它可以有很长的描述)它不会崩溃?
qrkod(){
this.qrCodeText = "BEGIN:VCALENDAR"+"%0D%0A"+
"VERSION:1.0"+"%0D%0A"+
"BEGIN:VEVENT"+"%0D%0A"+
"DTSTART:" + "19960401T090000" +"%0D%0A"+
"DTEND:" + "19960401T043000" +"%0D%0A"+
"SUMMARY:" + "Your Proposal Review"+"%0D%0A"+
"DESCRIPTION:" + "Steve and John to review newest proposal material"+"%0D%0A"+
"END:VEVENT"+"%0D%0A"+
"END:VCALENDAR"+"%0D%0A";
this.qrCodeText = decodeURIComponent(this.qrCodeText);
this.qrcode0 = new QRCode("qrcode", {
text: this.qrCodeText,
width: 363,
height: 385,
colorDark : "#000000",
colorLight : "#ffffff",
correctLevel : QRCode.CorrectLevel.H
});
}
答案 0 :(得分:4)
我自己使用该库遇到了同样的错误,看来库中有一个错误,如果你使用CorrectLevel.H并且字符串介于192和220之间,那么它将失败(注意在错误消息与字符串的长度不同)。它没有为QR码分配正确数量的空间/块,然后捕获该错误。
这可以通过将字符串长度增加/减少到该范围之外来解决。