jquery.qrcode.js ist ein Plug-In zum Zeichnen von QR-Codes in der JQuery-Klassenbibliothek. Es wird zum Rendern von QR-Code-Grafiken verwendet und unterstützt zwei Zeichenmethoden: Leinwand und Tabelle. (Wenn jquery.qrcode.js den Anzeigemodus auf Tabelle setzt, wird er in Webkit-Kernbrowsern wie Chrome deformiert. Dies erfordert Aufmerksamkeit.)
Das Folgende ist der Testcode (Farbsteuerung wird hinzugefügt, die Farbwerte von 4 Blöcken können eingestellt werden und das Rendern muss als Tabelle angegeben werden.), der Effekt ist wie folgt:
Der Code lautet wie folgt:
<html> <head> <title>JS生成二维码</title> <script type="text/javascript" src="jquery-1.4.2.min.js"></script> <script type="text/javascript" src="jquery.qrcode.min.js"></script> <style> #output{ margin-left:300px; margin-top:100px; } </style> </head> <body> <div id="output"></div> <script> window.onload = function () { var trs = $('#output').qrcode({ width: 100, height: 100, render: "canvas", //设置渲染方式 table canvas text: utf16to8("javascript生成二维码"), background: "#ffffff", //背景颜色 foreground: "red" //前景颜色 }).find('tr'), trLen = Math.floor(trs.size() / 2), tdLen = Math.floor(trs.eq(0).find('td').size() / 2), tds, bgColor; var colors = [['#ff0000', '#0100e2'], ['#00ed01', '#9f4d95']]; trs.each(function (j) { tds = $(this).find('td'); tds.each(function (i) { bgColor = this.style.backgroundColor; if (bgColor == 'red') { this.style.backgroundColor = colors[j < trLen ? 0 : 1][i < tdLen ? 0 : 1]; } }); }); } function utf16to8(str) { var out, i, len, c; out = ""; len = str.length; for (i = 0; i < len; i++) { c = str.charCodeAt(i); if ((c >= 0x0001) && (c <= 0x007F)) { out += str.charAt(i); } else if (c > 0x07FF) { out += String.fromCharCode(0xE0 | ((c >> 12) & 0x0F)); out += String.fromCharCode(0x80 | ((c >> 6) & 0x3F)); out += String.fromCharCode(0x80 | ((c >> 0) & 0x3F)); } else { out += String.fromCharCode(0xC0 | ((c >> 6) & 0x1F)); out += String.fromCharCode(0x80 | ((c >> 0) & 0x3F)); } } return out; } </script> </body> </html>
Die jquery-qrcode-Bibliothek verwendet die charCodeAt-Methode zur Kodierungskonvertierung, und diese Methode erhält standardmäßig ihre Unicode-Kodierung. Im Allgemeinen verwenden Decoder UTF-8, ISO-8859-1 usw., und Englisch ist kein Problem Wenn es sich um Chinesisch handelt, wird Unicode im Allgemeinen in UTF-16 mit einer Länge von 2 Ziffern implementiert, während die UTF-8-Kodierung 3 Ziffern umfasst, sodass die Kodierung und Dekodierung des QR-Codes nicht übereinstimmen.
Lösung: Konvertieren Sie die Zeichenfolge in UTF-8, bevor Sie den QR-Code codieren. Der spezifische Code lautet wie folgt: utf16to8-Funktion