随着移动互联网的发展,二维码现在应用得越来越广泛了,随手扫扫就可以浏览网站、加个好友什么的,比起手工输入真的是方便太多了。
前期做了一个综合测评系统,考虑逐步实现移动化,一长串的IP地址用户输入也不方便,借助二维码的话,用户拿起手机扫扫就可以直接进入系统。
基于这个应用场景,就上网研究下了网站二维码的实现方式,归纳起来有以下两种:
1、借助一些二维码生成网站或者二维码生成器生成二维码图片,然后挂在网站上,如码云 QR-Code (二维码) 在线生成器
优点:开发成本为零,能够快速实现多样化的二维码;
缺点:变更二维码的维护略显麻烦
2、在后端利用java或.net代码生成二维码图片,再在网站上引用图片,如qrcode、zxing等
优点:可定制性强,可快速批量生成
缺点:重量级实现方式,对于简单应用来讲开发成本较高
3、在前端页面通过javascript等方式即时生成为二维码(ˇ"https://github.com/jeromeetienne/jquery-qrcode">https://github.com/jeromeetienne/jquery-qrcode
jquery-qrcode主要包含两个文件:
1、qrcode.js:二维码算法实现类
2、jquery.qrcode.js:用jquery将qrcode.js封装起来,根据用户参数,实现canvas及table两种方式渲染生成二维码
压缩之后的只有一个文件jquery.qrcode.min.js。
代码实现
github上其实已经有了非常详细的使用说明及示例,在此就不多做说明了。
不过为了方便今后使用,我还是结合网络上大家的使用心得重新整理一份代码。
jquery-qrcode.html代码如下:
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>通过jquery-qrcode生成二维码</title> </head> <body> <!-- 引入百度CDN公共库的压缩版jQuery --> <script src="/UploadFiles/2021-04-02/jquery.min.js">基于官方示例测试,我们会发现识别出来的中文二维码会是乱码。
根据网友心存善念的解释:
这跟js的机制有关系,jquery-qrcode这个库是采用 charCodeAt() 这个方式进行编码转换的,
而这个方法默认会获取它的 Unicode 编码,一般的解码器都是采用UTF-8, ISO-8859-1等方式,
英文是没有问题,如果是中文,一般情况下Unicode是UTF-16实现,长度2位,而UTF-8编码是3位,这样二维码的编解码就不匹配了。
解决方式当然是,在二维码编码前把字符串转换成UTF-8
因此我们可以借助utf16to8.js解决这个问题,具体代码如下:
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; }以上就是今天给大家分享的全部内容了,希望能够对大家学习jQuery有所帮助。
P70系列延期,华为新旗舰将在下月发布
3月20日消息,近期博主@数码闲聊站 透露,原定三月份发布的华为新旗舰P70系列延期发布,预计4月份上市。
而博主@定焦数码 爆料,华为的P70系列在定位上已经超过了Mate60,成为了重要的旗舰系列之一。它肩负着重返影像领域顶尖的使命。那么这次P70会带来哪些令人惊艳的创新呢?
根据目前爆料的消息来看,华为P70系列将推出三个版本,其中P70和P70 Pro采用了三角形的摄像头模组设计,而P70 Art则采用了与上一代P60 Art相似的不规则形状设计。这样的外观是否好看见仁见智,但辨识度绝对拉满。