欢迎访问 夜阑小雨 我的学习碎片档案,这里记录了我的学习内容和工作中经验,希望给您带去帮助。

phonegap-生成二维码

javascript 夜阑小雨 1943℃ 0评论

 

一、使用jquery-qrcode生成二维码

先简单说一下jquery-qrcode,这个开源的三方库(可以从https://github.com/jeromeetienne/jquery-qrcode 获取),

qrcode.js 是实现二维码数据计算的核心类,

jquery.qrcode.js 是把它用jquery方式封装起来的,用它来实现图形渲染,其实就是画图(支持canvas和table两种方式)

 

下载js文件:

https://github.com/jeromeetienne/jquery-qrcode

 

html里面加:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.5.2/jquery.min.js"></script>

 

<script type="text/javascript" src="../src/jquery.qrcode.js"></script>
<script type="text/javascript" src="../src/qrcode.js"></script>

<p>Render in canvas</p>
<div id="qrcodeCanvas"></div>

 

js调用: 

 

jQuery(‘#qrcodeCanvas’).qrcode({
        render     : "canvas",//设置渲染方式
        width        : 144,     //设置宽度
        height        : 144,     //设置高度
        //typeNumber    : -1,      //计算模式
        correctLevel    : QRErrorCorrectLevel.H,//纠错等级
        background      : "#ffffff",  //背景颜色
        foreground      : "#233338",  //前景颜色,
        text    : "你好啊a",
    }); 

 

 

二、JS生成中文二维码

其实上面的js有一个小小的缺点,就是默认不支持中文。

这跟js的机制有关系,jquery-qrcode这个库是采用 charCodeAt() 这个方式进行编码转换的,

而这个方法默认会获取它的 Unicode 编码,一般的解码器都是采用UTF-8, ISO-8859-1等方式,

英文是没有问题,如果是中文,一般情况下Unicode是UTF-16实现,长度2位,而UTF-8编码是3位,这样二维码的编解码就不匹配了。

解决方式当然是,在二维码编码前把字符串转换成UTF-8,具体代码如下:

  1. function utf16to8(str) { 
  2. var out, i, len, c; 
  3.     out = ""; 
  4.     len = str.length; 
  5. for(i = 0; i < len; i++) { 
  6.     c = str.charCodeAt(i); 
  7. if ((c >= 0x0001) && (c <= 0x007F)) { 
  8.         out += str.charAt(i); 
  9.     } else if (c > 0x07FF) { 
  10.         out += String.fromCharCode(0xE0 | ((c >> 12) & 0x0F)); 
  11.         out += String.fromCharCode(0x80 | ((c >>  6) & 0x3F)); 
  12.         out += String.fromCharCode(0x80 | ((c >>  0) & 0x3F)); 
  13.     } else { 
  14.         out += String.fromCharCode(0xC0 | ((c >>  6) & 0x1F)); 
  15.         out += String.fromCharCode(0x80 | ((c >>  0) & 0x3F)); 
  16.     } 
  17.     } 
  18. return out; 
  19. }
  • 所以这里设置成:
    1. text    : utf16to8("你好啊a"),
  •  
  • 转载请注明:夜阑小雨 » phonegap-生成二维码

    喜欢 (0)or分享 (0)
    发表我的评论
    取消评论

    表情

    Hi,您需要填写昵称和邮箱!

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址