Qrcode.js - 错误:代码长度溢出。 (1716> 1056)

时间:2015-06-12 06:27:44

标签: javascript qr-code

我正在使用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
        });
    }

1 个答案:

答案 0 :(得分:4)

我自己使用该库遇到了同样的错误,看来库中有一个错误,如果你使用CorrectLevel.H并且字符串介于192和220之间,那么它将失败(注意在错误消息与字符串的长度不同)。它没有为QR码分配正确数量的空间/块,然后捕获该错误。

这可以通过将字符串长度增加/减少到该范围之外来解决。