<strong>예제는 다음과 같습니다. <br></strong><div class="codetitle"> <span><a style="CURSOR: pointer" data="52222" class="copybut" id="copybut52222" onclick="doCopy('code52222')"><u>코드 복사</u></a></span> 코드는 다음과 같습니다.</div> <div class="codebody" id="code52222"> <br><! DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><br><html xmlns ="http://www.w3.org/1999/xhtml"><br><head><br> <title>jquery-qrcode를 사용하여 QR 코드 생성, 중국어 지원< /title><br> <script src="../Scripts/jquery-1.4.4.min.js" type="text/javascript"></script><br> <script src=" jquery.qrcode.min .js" type="text/javascript"> , c;<BR> out = "";<BR> len = str.length;<BR> for (i = 0; i < len; i ) {<BR> c = str.charCodeAt(i);<BR> if ((c >= 0x0001) && (c <= 0x007F)) {<BR> 0x07FF) {<BR> 출력 = 문자열. fromCharCode(0xE0 | ((c >> 12) & 0x0F));<br> out = String.fromCharCode (0x80 | ((c >> 0) & 0x3F) ); );<br> 아웃 = String.fromCharCode(0x80 | ((c >> 0) & 0x3F));<br> }<br> }<br> 반환;<br> }<br> 함수 () {<br> >< ;body><br><div id="output"></div><br></body><br></html><br><br><br><br><br><br><br>코드 복사<br><br><br> 코드는 다음과 같습니다.<br><div class="codebody" id="code43936"> <br>//jquery.qrcode.min.js<br>(function (r) {<br> r.fn.qrcode = function (h) {<br> var s; function u(a) { this.mode = s; this.data = a } 함수 o(a, c) { this.errorCorlectLevel = c; this.moduleCount = 0; this.dataList = [] } function q(a, c) { if (void 0 == a.length) throw Error(a.length "/" c) for (var d = 0; d < a.length && 0 == a[d]; ) d ; this.num = Array(a.length - d c); for (var b = 0; b < a.length - d; b ) this.num[b] = a[b d] } 함수 p(a, c) { this.totalCount = a; this.dataCount = c } function t() { this.buffer = [] this.length = 0 } u.prototype = { getLength: function () { return this.data.length },<BR> 쓰기: function (a) { for (var c = 0; c < this.data.length; c ) a.put(this.data.charCodeAt( c), 8) } <BR> }; o.prototype = { addData: function (a) { this.dataList.push(new u(a)) this.dataCache = null }, isDark: function (a, c ) { if (0 > a || this.moduleCount <= a || 0 > c || this.moduleCount <= c) throw Error(a "," c); return this.modules[a][c] }, getModuleCount: function () { return this.moduleCount }, make: function () {<BR> if (1 > this.typeNumber) {<br> for (var a = 1, a = 1; 40 > a; a ) {<br> for (var c = p.getRSBlocks(a, this.errorCorlectLevel), d = new t, b = 0; e < c.length; e ) b = c[e].dataCount;<BR> for (e = 0; e < this.dataList.length; e ) c = this.dataList[e], d.put(c. 모드, 4), d.put(c.getLength(), j.getLengthInBits(c.mode, a)), c.write(d); if (d.getLengthInBits() <= 8 * b) break<BR> } this.typeNumber = a<BR> } this.makeImpl(!1, this.getBestMaskPattern())<BR> }, makeImpl: 함수( a, c) {<BR> this.moduleCount = 4 * this.typeNumber 17; this.modules = 배열(this.moduleCount); for (var d = 0; d < this.moduleCount; d ) { this.modules[d] = Array(this.moduleCount); for (var b = 0; b < this.moduleCount; b ) this.modules[d][b] = null } this.setupPositionProbePattern(0, 0); this.setupPositionProbePattern(this.moduleCount -<BR>7, 0); this.setupPositionProbePattern(0, this.moduleCount - 7); this.setupPositionAdjustPattern(); this.setupTimingPattern(); this.setupTypeInfo(a, c); 7 <= this.typeNumber && this.setupTypeNumber(a); null == this.dataCache && (this.dataCache = o.createData(this.typeNumber, this.errorCorlectLevel, this.dataList)); this.mapData(this.dataCache, c)<BR> }, setupPositionProbePattern: 함수 (a, c) {<BR> for (var d = -1; 7 >= d; d ) if (!(-1 > ;= a d || this.moduleCount <= a d)) for (var b = -1; 7 >= b; b )-1 >= c b || this.moduleCount 0 <= d && 6 >= d && (0 == b || 6 == b) || 0 <= b && 6 >= b && (0 == d || 6 == d) || 2 <= d && 4 >= d && 2 <= b && 4 >= b ? !0 : !1)<br> } , getBestMaskPattern: function () { for (var a = 0, c = 0, d = 0; 8 > d; d ) { this.makeImpl(!0, d); var b = j.getLostPoint(this); if (0 == d || a > b) a = b, c = d } return c }, createMovieClip: function (a, c, d) { a = a.createEmptyMovieClip(c, d); this.make(); for (c = 0; c setupTimingPattern: function () { for (var a = 8; a < this.moduleCount - 8; a ) null = = this.modules[a][6] && (this.modules[a][6] = 0 == a % 2); for (a = 8; a < this.moduleCount - 8; a ) null == this.modules[6][a] && (this.modules[6][a] = 0 == a % 2) }, setupPositionAdjustPattern: function () { for (var a = j.getPatternPosition(this.typeNumber), c = 0; c < a.length; c ) for (var d = 0; d < a.length; d ) { var b = a[c], e = a[d]; if (null == this.modules[b][e]) for (var f = -2; 2 >= f; f ) for (var i = -2; 2 >= i; i ) this.modules [b f][e i] = -2 == f || 2 == f || -2 == 나 || 2 == 나 || 0 == f && 0 == i ? !0 : !1 } }, setupTypeNumber: 함수 (a) {<br> for (var c =<br>j.getBCHTypeNumber(this.typeNumber), d = 0; 18 > d; d ) { var b = !a && 1 == (c >> d & 1); this.modules[Math.floor(d / 3)][d % 3 this.moduleCount - 8 - 3] = b } for (d = 0; 18 > d; d ) b = !a && 1 == ( c >> d & 1), this.modules[d % 3 this.moduleCount - 8 - 3][Math.floor(d / 3)] = b<br> }, setupTypeInfo: 함수(a, c) {<br> for (var d = j.getBCHTypeInfo(this.errorCorlectLevel << 3 | c), b = 0; 15 > b; b ) { var e = !a && 1 == (d > > 6 > 비? this.modules[b][8] = e : 8 > 비? this.modules[b 1][8] = e : this.modules[this.moduleCount - 15 b][8] = e } for (b = 0; 15 > b; b ) e = !a && 1 = = (d>>b & 1), 8>> 비? this.modules[8][this.moduleCount -<br>b - 1] = e : 9 > 비? this.modules[8][15 - b - 1 1] = e : this.modules[8][15 - b - 1] = e; this.modules[this.moduleCount - 8][8] = !a<br> }, mapData: function (a, c) { for (var d = -1, b = this.moduleCount - 1, e = 7, f = 0, i = this.moduleCount - 1; 0 g; g ) if (null == this.modules[b][i - g]) { var n = !1; f < a.length && (n = 1 == (a[f] >>> e & 1)); j.getMask(c, b, i - g) && (n = !n); this.modules[b][i - g] = n; 이자형--; -1 == e && (f , e = 7) } b = d; if (0 > b || this.moduleCount }; o.PAD0 = 236; o.PAD1 = 17; o.createData = 함수 (a, c, d) {<br> for (var c = p.getRSBlocks(a,<br>c), b = new t, e = 0; e < d.length; e ) { var f = d[e]; b.put(f.모드, 4); b.put(f.getLength(), j.getLengthInBits(f.mode, a)); f.write(b) } for (e = a = 0; e < c.length; e ) a = c[e].dataCount; if (b.getLengthInBits() > 8 * a) throw Error("코드 길이 오버플로. (" b.getLengthInBits() ">" 8 * a ")"); for (b.getLengthInBits() 4 <= 8 * a && b.put(0, 4); 0 != b.getLengthInBits() % 8; ) b.putBit(!1); for (; !(b.getLengthInBits() >= 8 * a); ) { b.put(o.PAD0, 8); if (b.getLengthInBits() >= 8 * a) break; b.put(o.PAD1, 8) } return o.createBytes(b, c)<br> }; o.createBytes = 함수(a, c) {<br> for (var d =<br>0, b = 0, e = 0, f = Array(c.length), i = Array(c.length), g = 0; g (d[n ] = f[g][k]); for (k = 0; k 반환 }; s = 4; for (var j = { PATTERN_POSITION_TABLE: [[], [6, 18], [6, 22], [6, 26], [6, 30], [6, 34], [6, 22, 38], [6, 24, 42], [6, 26, 46], [6, 28, 50], [6, 30, 54], [6, 32, 58], [6, 34, 62], [6 , 26, 46, 66], [6, 26, 48, 70], [6, 26, 50, 74], [6, 30, 54, 78], [6, 30, 56, 82], [6 , 30, 58, 86], [6, 34, 62, 90], [6, 28, 50, 72, 94], [6, 26, 50, 74, 98], [6, 30, 54, 78 , 102], [6, 28, 54, 80, 106], [6, 32, 58, 84, 110], [6, 30, 58, 86, 114], [6, 34, 62, 90, 118 ], [6, 26, 50, 74, 98, 122], [6, 30, 54, 78, 102, 126], [6, 26, 52,<br>78, 104, 130], [6, 30, 56, 82, 108, 134], [6, 34, 60, 86, 112, 138], [6, 30, 58, 86, 114, 142], [6, 34, 62, 90, 118, 146], [6, 30, 54, 78, 102, 126, 150], [6, 24, 50, 76, 102, 128, 154], [6, 28, 54, 80, 106, 132, 158] , [6, 32, 58, 84, 110, 136, 162], [6, 26, 54, 82, 110, 138, 166], [6, 30, 58, 86, 114, 142, 170]], G15: 1335, G18: 7973, G15_MASK: 21522, getBCHTypeInfo: 함수 (a) { for (var c = a << 10; 0 <= j.getBCHDigit(c) - j.getBCHDigit(j.G15) ; ) c ^= j.G15 << j.getBCHDigit(c) - j.getBCHDigit(j.G15); return (a << 10 | c) ^ j.G15_MASK }, getBCHTypeNumber: 함수 (a) {<BR> for (var c = a << 12; 0 <= j.getBCHDigit(c) - <BR>j.getBCHDigit(j.G18) ) c ^= j.G18 << j.getBCHDigit(c) - j.getBCHDigit(j.G18); <<를 반환합니다. 12 | c<BR>}, getBCHDigit: 함수 (a) { for (var c = 0; 0 != a; ) c , a >>>= 1; return c }, getPatternPosition: 함수 (a) { return j.PATTERN_POSITION_TABLE[a - 1] }, getMask: 함수 (a, c, d) {<br> 스위치 (a) {<br> 사례 0: 반환 0 = = (c d) % 2; 사례 1: 0 == c % 2를 반환합니다. 사례 2: return 0 == d % 3; 사례 3: 0을 반환합니다 == (c d) % 3; 사례 4: return 0 == (Math.floor(c / 2) Math.floor(d / 3)) % 2; 사례 5: 0 반환 == c * d % 2 c * d % 3; 사례 6: 0 반환 == (c * d % 2 c * d % 3) % 2; 사례 7: 0을 반환합니다 == (c * d % 3 (c d) % 2) % 2; 기본값: throw Error("bad MaskPattern:" <br>a);<br> } <br>}, getErrorCorlectPolynomial: function (a) { for (var c = new q([1], 0), d = 0 ; d if (1 <= c && 10 > c) 스위치 (a) { 사례 1: return 10; 사례 2: 9를 반환합니다. 사례 s: 8을 반환합니다. 사례 8: 8을 반환합니다. 기본값: throw Error("mode:" a); } else if (27 > c) 스위치 (a) { 사례 1: 12 반환; 사례 2: 11을 반환합니다. 사례 s: 16을 반환합니다. 사례 8: 10을 반환합니다. 기본값: throw Error("mode:" a); } else if (41 > c) 스위치 (a) {<br> 사례 1: 14 반환; 사례 2: 13을 반환합니다. 사례 s: 16을 반환합니다. 사례 8: 12를 반환합니다. 기본값: throw Error("mode:" <br>a);<br> } else throw Error("type:" c);<br>}, getLostPoint: function (a) {<br> for (var c = a.getModuleCount(), d = 0, b = 0; b = g; g ) if (!(0 > b g || c = h; h ) 0 > 응 || c LOG_TABLE: 배열(256)<br> }, m = 0; 8 > 중; m ) l.EXP_TABLE[m] = 1 << 중; for (m = 8; 256 > m; m ) l.EXP_TABLE[m] = l.EXP_TABLE[m - 4] ^ l.EXP_TABLE[m - 5] ^ l.EXP_TABLE[m - 6] ^ l.EXP_TABLE [m - 8]; for (m = 0; 255 > m; m ) l.LOG_TABLE[l.EXP_TABLE[m]] = m; q.prototype = { get: function (a) { return this.num[a] }, getLength: function () { return this.num.length }, 곱하기: 함수 (a) { for (var c = Array(this.getLength() a.getLength() - 1), d = 0; d < this.getLength(); d ) for (var b = 0 ; b < a.getLength(); b ) c[db] ^= l.glog(this.get(d)) l.glog(a.get(b))); return new q(c, 0) }, mod: function (a) {<BR> if (0 ><br>this.getLength() - a.getLength()) return this; for (var c = l.glog(this.get(0)) - l.glog(a.get(0)), d = Array(this.getLength()), b = 0; b < this.getLength ();b) d[b] = this.get(b); for (b = 0; b < a.getLength(); b ) d[b] ^= l.gexp(l.glog(a.get(b)) c); return (new q(d, 0)).mod(a)<BR> } <BR> }; p.RS_BLOCK_TABLE = [[1, 26, 19], [1, 26, 16], [1, 26, 13], [1, 26, 9], [1, 44, 34], [1, 44, 28], [1, 44, 22], [1, 44, 16], [1, 70, 55], [1, 70, 44], [2, 35, 17], [2, 35, 13] , [1, 100, 80], [2, 50, 32], [2, 50, 24], [4, 25, 9], [1, 134, 108], [2, 67, 43], [ 2, 33, 15, 2, 34, 16], [2, 33, 11, 2, 34, 12], [2, 86, 68], [4, 43, 27],<BR>[4, 43 , 19], [4, 43, 15], [2, 98, 78], [4, 49, 31], [2, 32, 14, 4, 33, 15], [4, 39, 13, 1 , 40, 14], [2, 121, 97], [2, 60, 38, 2, 61, 39], [4, 40, 18, 2, 41, 19], [4, 40, 14, 2 , 41, 15], [2, 146, 116], [3, 58, 36, 2, 59, 37], [4, 36, 16, 4, 37, 17], [4, 36, 12, 4 , 37, 13], [2, 86, 68, 2, 87, 69], [4, 69, 43, 1, 70, 44], [6, 43, 19, 2, 44, 20], [6 , 43, 15, 2, 44, 16], [4, 101, 81], [1, 80, 50, 4, 81, 51], [4, 50, 22, 4, 51, 23], [3 , 36, 12, 8, 37, 13], [2, 116, 92, 2, 117, 93], [6, 58, 36, 2, 59, 37], [4, 46, 20, 6, 47 , 21], [7, 42, 14, 4, 43, 15], [4, 133, 107], [8, 59, 37, 1, 60, 38], [8, 44, 20, 4, 45 , 21], [12, 33, 11, 4, 34, 12], [3, 145, 115, 1, 146,<BR>116], [4, 64, 40, 5, 65, 41], [ 11, 36, 16, 5, 37, 17], [11, 36, 12, 5, 37, 13], [5, 109, 87, 1, 110, 88], [5, 65, 41, 5, 66, 42], [5, 54, 24, 7, 55, 25], [11, 36, 12], [5, 122, 98, 1, 123, 99], [7, 73, 45, 3, 74, 46], [15, 43, 19, 2, 44, 20], [3, 45, 15, 13, 46, 16], [1, 135, 107, 5, 136, 108], [10, 74, 46, 1, 75, 47], [1, 50, 22, 15, 51, 23], [2, 42, 14, 17, 43, 15], [5, 150, 120, 1, 151, 121], [9, 69, 43, 4, 70, 44], [17, 50, 22, 1, 51, 23], [2, 42, 14, 19, 43, 15], [3, 141, 113, 4, 142, 114], [3, 70, 44, 11, 71, 45], [17, 47, 21, 4, 48, 22], [9, 39, 13, 16, 40, 14] , [3, 135, 107, 5, 136, 108], [3, 67, 41, 13, 68, 42], [15, 54, 24, 5, 55, 25], [15,<BR>43 , 15, 10, 44, 16], [4, 144, 116, 4, 145, 117], [17, 68, 42], [17, 50, 22, 6, 51, 23], [19, 46 , 16, 6, 47, 17], [2, 139, 111, 7, 140, 112], [17, 74, 46], [7, 54, 24, 16, 55, 25], [34, 37 , 13], [4, 151, 121, 5, 152, 122], [4, 75, 47, 14, 76, 48], [11, 54, 24, 14, 55, 25], [16, 45 , 15, 14, 46, 16], [6, 147, 117, 4, 148, 118], [6, 73, 45, 14, 74, 46], [11, 54, 24, 16, 55, 25 ], [30, 46, 16, 2, 47, 17], [8, 132, 106, 4, 133, 107], [8, 75, 47, 13, 76, 48], [7, 54, 24 , 22, 55, 25], [22, 45, 15, 13, 46, 16], [10, 142, 114, 2, 143, 115], [19, 74, 46, 4, 75, 47], [28, 50, 22, 6, 51, 23], [33, 46, 16, 4, 47, 17], [8, 152, 122, 4, 153, 123], [22, 73, 45,<BR>3, 74, 46], [8, 53, 23, 26, 54, 24], [12, 45, 15, 28, 46, 16], [3, 147, 117, 10, 148, 118] , [3, 73, 45, 23, 74, 46], [4, 54, 24, 31, 55, 25], [11, 45, 15, 31, 46, 16], [7, 146, 116, 7, 147, 117], [21, 73, 45, 7, 74, 46], [1, 53, 23, 37, 54, 24], [19, 45, 15, 26, 46, 16], [ 5, 145, 115, 10, 146, 116], [19, 75, 47, 10, 76, 48], [15, 54, 24, 25, 55, 25], [23, 45, 15, 25, 46, 16], [13, 145, 115, 3, 146, 116], [2, 74, 46, 29, 75, 47], [42, 54, 24, 1, 55, 25], [23, 45, 15, 28, 46, 16], [17, 145, 115], [10, 74, 46, 23, 75, 47], [10, 54, 24, 35, 55, 25], [19, 45, 15, 35, 46, 16], [17, 145, 115, 1, 146, 116], [14, 74, 46, 21, 75, 47], [29, 54, 24, 19,<BR>55, 25], [11, 45, 15, 46, 46, 16], [13, 145, 115, 6, 146, 116], [14, 74, 46, 23, 75, 47], [44 , 54, 24, 7, 55, 25], [59, 46, 16, 1, 47, 17], [12, 151, 121, 7, 152, 122], [12, 75, 47, 26, 76 , 48], [39, 54, 24, 14, 55, 25], [22, 45, 15, 41, 46, 16], [6, 151, 121, 14, 152, 122], [6, 75 , 47, 34, 76, 48], [46, 54, 24, 10, 55, 25], [2, 45, 15, 64, 46, 16], [17, 152, 122, 4, 153, 123 ], [29, 74, 46, 14, 75, 47], [49, 54, 24, 10, 55, 25], [24, 45, 15, 46, 46, 16], [4, 152, 122 , 18, 153, 123], [13, 74, 46, 32, 75, 47], [48, 54, 24, 14, 55, 25], [42, 45, 15, 32, 46, 16], [20, 147, 117, 4, 148, 118], [40, 75, 47, 7, 76, 48], [43, 54, 24, 22, 55, 25], [10,<BR>45, 15, 67, 46, 16], [19, 148, 118, 6, 149, 119], [18, 75, 47, 31, 76, 48], [34, 54, 24, 34, 55, 25] , [20, 45, 15, 61, 46, 16]]; p.getRSBlocks = function (a, c) { var d = p.getRsBlockTable(a, c); if (void 0 == d) throw Error("bad rs block @ typeNumber:" a "/errorCordirectLevel:" c); for (var b = d.length / 3, e = [], f = 0; f < b; f ) for (var h = d[3 * f 0], g = d[3 * f 1], j = d[3 * f 2], l = 0; l < h; l ) e.push(new p(g, j)); 전자를 반환 }; p.getRsBlockTable = 함수 (a, c) {<BR> 스위치 (c) {<BR> 사례 1: return p.RS_BLOCK_TABLE[4 * (a - 1) 0]; 사례 0: p.RS_BLOCK_TABLE[4 * (a - 1) 1] 반환; 사례 3: return p.RS_BLOCK_TABLE[4 *<BR>(a - 1) 2]; 사례 2: p.RS_BLOCK_TABLE[4 * (a - 1) 3]<BR> } <BR>} 반환; t.prototype = { get: function (a) { return 1 == (this.buffer[Math.floor(a / 8)] >>> 7 - a % 8 & 1) }, put: function ( a, c) { for (var d = 0; d 올바른 레벨: 2, 배경: "#ffffff", 전경: "#000000"<br>}, h); return this.each(function () {<br> var a; if ("canvas" == h.render) {<br> a = new o(h.typeNumber, h.correctLevel); a.addData(h. 텍스트); a.make(); var c = document.createElement("canvas"); c.width = h.width; for (var d = c.getContext("2d") , b = h.width / a.getModuleCount(), e = h.height / a.getModuleCount(), f = 0; f < a.getModuleCount() f ) for (var i = 0; i < a.getModuleCount(); i ) {<BR> d.fillStyle = a.isDark(f, i) ? h.foreground : h.ground; var g = Math.ceil((i 1) * b) - Math. 바닥(i * b),<BR>j = Math.ceil((f 1) * b) - Math.floor(f * b) d.fillRect(Math.round(i * b), Math.round( f * e), g, j)<BR> } <BR> } else {<BR> a = new o(h.typeNumber, h.corrightLevel) a.addData(h.text); ; c = r("<table></table>").css("너비", h.width "px").css("높이", h.height "px").css("테두리 ", "0px").css("테두리 축소", "접기").css("배경 색상", h.배경); d = h.width / a.getModuleCount(); b = h.height / a.getModuleCount(); for (e = 0; e f = r("<tr></tr>").css("height", b "px"). 추가(c); for (i = 0; i < a.getModuleCount(); i ) r("<td></td>").css("width",<br>d "px").css(" background-color", a.isDark(e, i) ? h.foreground : h.Background).appendTo(f)<br> } <br> } a = c; jQuery(a).appendTo(this)<br>})<br> } <br>})(jQuery);<br> </div> </div>