博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
js生成二维码
阅读量:6417 次
发布时间:2019-06-23

本文共 2645 字,大约阅读时间需要 8 分钟。

hot3.png

首先需要jquery.qrcode.min.js插件转二维码,下载地址:

 

1、在页面需要显示二维码的地方,代码如下:

<div id="qrcode"></div>

2、调用qrcode插件。

qrcode可以支持canvas和table两种方式渲染图片,默认canvas。一般canvas渲染效果比table要好,区别可以试一下。

调用代码如下:

$('#qrcode').qrcode("您好!");//任意字符串

也可以这样:

$('#qrcode').qrcode({            render:"table",//渲染方式            height:100,            width:100,            text:"简单,会想"//      background:"yellow" ,//背景颜色//      foreground:"red"//前景颜色 });

还有很多其他属性,如边框留白大小quietZoneSize,定义图标logo,correctLevel(容错级别,支持L,M,H)Low/Middle/High等等

3、

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

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

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

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

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

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

这是自己写的一个例子:加了一些样式,大家可以参考下

    
    
生成二维码    
    
//转字符码    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;    }    function qrcode(){               //生成二维码        $('#output').qrcode({            height:100,            width:100,            text:utf16to8($('#text'.html))//      background:"yellow" ,//背景颜色//      foreground:"red"//前景颜色 });    }
    
        
            qrcode.            
easy521.com                
        
生成二维码        
提供者:刘谱

        
        
            
Hello Word                
            
                
        
 最后更新时间:2015.08.20 

转载于:https://my.oschina.net/u/2415525/blog/496954

你可能感兴趣的文章
git笔记
查看>>
Android开源中国客户端学习 配置文件读写 以及其他一些工具类 <13>
查看>>
国外的opencv识别文档
查看>>
java获取指定字符串的下一个
查看>>
多行数据提交到Struts的ActionForm的List属性中
查看>>
理解RESTful架构
查看>>
Linux自动压缩备份目录文件与恢复
查看>>
Android 图片相关整理
查看>>
Spring实战 (二) Spring2.5/3.0新特性及XML配置文件命名空间介绍
查看>>
创建一个Hello World(React),组件的作用
查看>>
java中的context
查看>>
Spring源码阅读——3
查看>>
使用ZXing生成可供手机识别的二维码
查看>>
【原创】modb 开发之需求和总体设计
查看>>
mysql explain type连接类型示例
查看>>
统计文件中不小于某一长度的单词的个数(泛型算法实现)
查看>>
常见缓存算法和缓存策略
查看>>
MyBatis学习总结(10)——批量操作
查看>>
新开activity并且新旧窗口之间传值
查看>>
Linux文件系统的几个性能测试软件小结
查看>>