欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

jquery插件qrcode在線生成二維碼

 更新時(shí)間:2015年04月26日 09:22:55   投稿:hebedich  
jquery.qrcode是一個(gè)強(qiáng)大的jquery的插件,可以用來二維碼圖形的渲染,用于生成二維碼,非常的實(shí)用,需要的朋友參考下。

隨著移動(dòng)互聯(lián)網(wǎng)的發(fā)展,二維碼現(xiàn)在應(yīng)用得越來越廣泛了,隨手掃掃就可以瀏覽網(wǎng)站、加個(gè)好友什么的,比起手工輸入真的是方便太多了。

前期做了一個(gè)綜合測(cè)評(píng)系統(tǒng),考慮逐步實(shí)現(xiàn)移動(dòng)化,一長(zhǎng)串的IP地址用戶輸入也不方便,借助二維碼的話,用戶拿起手機(jī)掃掃就可以直接進(jìn)入系統(tǒng)。

基于這個(gè)應(yīng)用場(chǎng)景,就上網(wǎng)研究下了網(wǎng)站二維碼的實(shí)現(xiàn)方式,歸納起來有以下兩種:

1、借助一些二維碼生成網(wǎng)站或者二維碼生成器生成二維碼圖片,然后掛在網(wǎng)站上,如碼云 QR-Code (二維碼) 在線生成器

優(yōu)點(diǎn):開發(fā)成本為零,能夠快速實(shí)現(xiàn)多樣化的二維碼;

缺點(diǎn):變更二維碼的維護(hù)略顯麻煩

2、在后端利用java或.net代碼生成二維碼圖片,再在網(wǎng)站上引用圖片,如qrcode、zxing等

優(yōu)點(diǎn):可定制性強(qiáng),可快速批量生成

缺點(diǎn):重量級(jí)實(shí)現(xiàn)方式,對(duì)于簡(jiǎn)單應(yīng)用來講開發(fā)成本較高

3、在前端頁面通過javascript等方式即時(shí)生成為二維碼(ˇ?ˇ) ,如jquery-qrcode

優(yōu)點(diǎn):輕量級(jí)實(shí)現(xiàn)方式,減少圖片IO,節(jié)省流量

缺點(diǎn):不適合復(fù)雜二維碼的生成

當(dāng)然在實(shí)際應(yīng)用中,這三種實(shí)現(xiàn)方式也不是完全孤立的,我們也可以根據(jù)項(xiàng)目實(shí)際情況結(jié)合應(yīng)用,最大限度地提高效率、節(jié)約成本。

晚上時(shí)間也不多就選了個(gè)jquery-qrcode研究下。

jquery-qrcode

jquery-qrcode是一個(gè)能夠在瀏覽器端生成二維碼的jquery插件。它是獨(dú)立的,最小壓縮之后不足4k,也沒有圖片下載請(qǐng)求。引入該類庫(kù)之后,只需要一行代碼,就可以很容易在web頁面加上二維碼。

其托管在github上:https://github.com/jeromeetienne/jquery-qrcode

jquery-qrcode主要包含兩個(gè)文件:

1、qrcode.js:二維碼算法實(shí)現(xiàn)類

2、jquery.qrcode.js:用jquery將qrcode.js封裝起來,根據(jù)用戶參數(shù),實(shí)現(xiàn)canvas及table兩種方式渲染生成二維碼

壓縮之后的只有一個(gè)文件jquery.qrcode.min.js。

代碼實(shí)現(xiàn)

github上其實(shí)已經(jīng)有了非常詳細(xì)的使用說明及示例,在此就不多做說明了。

不過為了方便今后使用,我還是結(jié)合網(wǎng)絡(luò)上大家的使用心得重新整理一份代碼。

jquery-qrcode.html代碼如下:

<!DOCTYPE html>
<html>
<head>
 <meta charset="UTF-8">
 <title>通過jquery-qrcode生成二維碼</title>
</head>
<body>
<!-- 引入百度CDN公共庫(kù)的壓縮版jQuery -->
<script src="http://libs.baidu.com/jquery/2.0.3/jquery.min.js"></script>
<!--引入壓縮版jquery.qrcode.js -->
<script src="jquery.qrcode.min.js"></script>
<!--未壓縮則需要引入兩個(gè)文件jquery.qrcode.js和qrcode.js -->
<!--jquery.qrcode.js:jquery封裝渲染類庫(kù) -->
<!--<script src="jquery.qrcode.js"></script>-->
<!--qrcode.js:二維碼核心計(jì)算類庫(kù) -->
<!--<script src="qrcode.js"></script>-->
<script src="jquery.qrcode.min.js"></script>
<!--解決中文亂碼問題,引入utf16t8.js -->
<script src="utf16to8.js"></script>

<div id="qrcodeCanvas"></div>

<div id="qrcodeTable"></div>
<script>
 //最簡(jiǎn)用法,render默認(rèn)是canvas
 $('#qrcodeCanvas').qrcode("http://www.dbjr.com.cn/");
 //完整用法,有默認(rèn)值的均可省略
 $('#qrcodeTable').qrcode({
  text: utf16to8("腳本之家:http://www.dbjr.com.cn/"),//二維碼包含的內(nèi)容,默認(rèn)只支持英文內(nèi)容,中文會(huì)亂碼,通過utf16to8轉(zhuǎn)碼可支持中文
  render: "table",//渲染方式可選擇canvas或table,默認(rèn)是canvas,canvas方式還支持右鍵圖片下載
  width: 256,//寬度,默認(rèn)是256
  height: 256,//高度,默認(rèn)是256,建議寬度和高度保持一致,否則不容易被識(shí)別
  typeNumber: -1,//計(jì)算模式,默認(rèn)是-1
  //correctLevel: QRErrorCorrectLevel.H,//糾錯(cuò)等級(jí),默認(rèn)是QRErrorCorrectLevel.H,但是加上correctLevel這一行后無法渲染出二維碼
  background: "#ffffff",//背景顏色,默認(rèn)是白色
  foreground: "#000000"http://前景顏色,默認(rèn)是黑色
 });
</script>
<body>
</html>

基于官方示例測(cè)試,我們會(huì)發(fā)現(xiàn)識(shí)別出來的中文二維碼會(huì)是亂碼。

根據(jù)網(wǎng)友心存善念的解釋:

這跟js的機(jī)制有關(guān)系,jquery-qrcode這個(gè)庫(kù)是采用 charCodeAt() 這個(gè)方式進(jìn)行編碼轉(zhuǎn)換的,

而這個(gè)方法默認(rèn)會(huì)獲取它的 Unicode 編碼,一般的解碼器都是采用UTF-8, ISO-8859-1等方式,

英文是沒有問題,如果是中文,一般情況下Unicode是UTF-16實(shí)現(xiàn),長(zhǎng)度2位,而UTF-8編碼是3位,這樣二維碼的編解碼就不匹配了。

解決方式當(dāng)然是,在二維碼編碼前把字符串轉(zhuǎn)換成UTF-8

因此我們可以借助utf16to8.js解決這個(gè)問題,具體代碼如下:

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;
}

以上就是今天給大家分享的全部?jī)?nèi)容了,希望能夠?qū)Υ蠹覍W(xué)習(xí)jQuery有所幫助。

相關(guān)文章

最新評(píng)論