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

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

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

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

支持的功能主要有:

Js代码  
  1. text     : "https://github.com/jeromeetienne/jquery-qrcode"  //设置二维码内容
Js代码  
  1. render   : "canvas",//设置渲染方式
  2. width       : 256,     //设置宽度
  3. height      : 256,     //设置高度
  4. typeNumber  : -1,      //计算模式
  5. correctLevel    : QRErrorCorrectLevel.H,//纠错等级
  6. background      : "#ffffff",//背景颜色
  7. foreground      : "#000000" //前景颜色

使用方式非常简单

Js代码  
  1. jQuery('#output').qrcode({width:200,height:200,correctLevel:0,text:content});

经过简单实践,

使用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,具体代码如下:

Js代码  
  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. }

参考:

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

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

转载于:https://www.cnblogs.com/xcsn/p/3258035.html

使用jquery-qrcode生成二维码相关推荐

  1. 使用jquery.qrcode生成二维码(转)

    jQuery 的 qrcode 插件就可以在浏览器端生成二维码图片. 这个插件的使用非常简单: 1.首先在页面中加入jquery库文件和qrcode插件. 代码   <script type=& ...

  2. 使用jquery.qrcode生成二维码

    1.首先在页面中加入jquery库文件和qrcode插件. <script type="text/javascript" src="jquery.js"& ...

  3. 使用jQuery的插件qrcode生成二维码(静态+动态生成)及常见问题解决方法

    使用jQuery的插件qrcode生成二维码(静态+动态生成)及常见问题解决方法 参考文章: (1)使用jQuery的插件qrcode生成二维码(静态+动态生成)及常见问题解决方法 (2)https: ...

  4. C# 利用QRCode生成二维码图片

    网上生成二维码的组件是真多,可是真正好用的,并且生成速度很快的没几个,QRCode就是我在众多中找到的,它的生成速度快.但是网上关于它的使用说明,真的太少了,大都是千篇一律的复制粘贴.这是本要用它做了 ...

  5. 关于QRCode生成二维码(背景图、Logo)

    关于QRCode生成二维码的代码 /// <summary> /// 创建二维码 /// </summary> /// <param name="QRStrin ...

  6. php使用Qrcode生成二维码

    php使用Qrcode生成二维码 首先检查php.ini Gd 库要打开 use QrCode; //控制器引用public function index(){include 'phpqrcode.p ...

  7. 用ThoughtWorks.QRCode生成二维码时出现“索引超出了数组界限”的错误

    用ThoughtWorks.QRCode生成二维码时出现"索引超出了数组界限"的错误 字符串较长的情况下,用ThoughtWorks.QRCode生成二维码时出现"索引超 ...

  8. qrcode 生成二维码,带logo 带文字描述

    qrcode 生成二维码 1.引入 pom.xml 2. ResourceRenderer 3. QRCodeUtil 4. QRCodeController 5. HTML 6. 测试 1.引入 p ...

  9. C语言使用QRcode生成二维码

    C语言使用QRcode生成二维码的简单操作 首先需要QRcode源码包 可以参考这位大神的文章: https://blog.csdn.net/qq_21475601/article/details/7 ...

  10. qr-code 生成二维码

    1.下载: composer require endroid/qr-code php: >=7.2 2.新建Qrcodes.php二维码生成类 use Endroid\QrCode\ErrorC ...

最新文章

  1. 安装Properties Editor插件,解决XXX.properties文件中文乱码的问题
  2. 基于Nanopi NEO开发板的套接字编程!
  3. atmega8 例程:PWM
  4. CoreJava 笔记总结-第十二章 并发-2
  5. linux之fail2ban之预防暴力破解
  6. 并注册烧写钩子 获取启动介质类型_PyTorch中对张量登记注册反向传播的钩子函数,并展示调用顺序...
  7. 100阶乘c语言如何实现,求10000的阶乘(c语言代码实现)
  8. 如果让AI来续写这些小说……
  9. windows+jdk 使用keytool工具
  10. 传输线理论知识理解与总结(一)
  11. android 基站信息说明,安卓android手机查看基站信息
  12. 图卷积神经网络与标签传播的区别
  13. 电影《暮光之城》不得不爱
  14. go 学习笔记之解读什么是defer延迟函数
  15. C语言(素数)[解法]:编写prime(m)判断m是否为素数,当m为素数返回1,否则返回0;
  16. console,控制台也能玩出花样(console操作大全)
  17. JPA criteria 查询:类型安全与面向对象
  18. datawhale课程《transformers入门》笔记6:文本分类、超参搜索
  19. 头号音频对齐插件 VocAlign Project 5 发布
  20. macos双系统 wintogo_我的 WinToGo 踩坑指南

热门文章

  1. 读书笔记2014第10本:《设计心理学》
  2. 防止数据中心停机需要采取什么措施
  3. ecshop备份数据 ecshop转移数据 ecshop更换主机
  4. ibatis Clob对象处理
  5. 使用Visual Studio 部署SharePoint时提示“路径中具有非法字符”
  6. Java实现的基于socket的一次通信
  7. linux经典命令-Web服务器管理
  8. 用户首选项NSUserDefaults
  9. Dos下面删除文件秘笈
  10. Spring Boot(5) web开发(3)拦截器、文件上传、异常处理