注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

php开发lamp

《西安--木木》-经历丰富了生活。 架构师QQ群: 246695517

 
 
 

日志

 
 

二维码生成(方式1)php,js  

2014-09-09 16:05:21|  分类: php应用 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
jQuery.qrcode 很简单
http://larsjung.de/jquery-qrcode/
{
    // render method: 'canvas', 'image' or 'div'
    render: 'canvas',

    // version range somewhere in 1 .. 40
    minVersion: 1,
    maxVersion: 40,

    // error correction level: 'L', 'M', 'Q' or 'H'
    ecLevel: 'L',

    // offset in pixel if drawn onto existing canvas
    left: 0,
    top: 0,

    // size in pixel
    size: 200,

    // code color or image element
    fill: '#000',

    // background color or image element, null for transparent background
    background: null,

    // content
    text: 'no text',

    // corner radius relative to module width: 0.0 .. 0.5
    radius: 0,

    // quiet zone in modules
    quiet: 0,

    // modes
    // 0: normal
    // 1: label strip
    // 2: label box
    // 3: image strip
    // 4: image box
    mode: 0,

    mSize: 0.1,
    mPosX: 0.5,
    mPosY: 0.5,

    label: 'no label',
    fontname: 'sans',
    fontcolor: '#000',

    image: null
}


//
$(selector).qrcode({ "width": 100, "height": 100, "color": "#3a3", "text": "http://larsjung.de/qrcode" });


 

 经过简单实践,

 

使用canvas方式渲染性能还是非常不错的,但是如果用table方式,性能不太理想,特别是IE9以下的浏览器,所以需要自行优化一下渲染table的方式,这里就不细述了。

 

二、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;  

参考:

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

http://www.onicos.com/staff/iz/amuse/javascript/expert/utf.txt

  评论这张
 
阅读(252)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017