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

Ste*_*vik 4 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
        });
    }
Run Code Online (Sandbox Code Playgroud)

Gra*_*uir 6

我自己使用库遇到了相同的错误,它似乎在库中存在一个错误,如果您使用CorrectLevel.H并在192到220个字符之间输入字符串,它将失败(请注意,错误消息中指定的长度为与字符串的长度不同)。它没有为QR码分配正确的空格/块数,然后捕获该错误。

可以通过增加/减少字符串长度超出该范围来解决。

  • 我可以在哪里增加字符串? (2认同)
  • 谢谢,这也是我的问题。对我来说,末尾的额外空格并不重要,因此我使用 `qrCodeText = qrCodeText.padEnd(220);` 附加空格 (2认同)