JqueryQrcode生成二维码不支持中文的解决办法

简介: JqueryQrcode.js有一个小小的缺点,就是默认不支持中文。这跟js的机制有关系,jquery-qrcode这个库是采用 charCodeAt() 这个方式进行编码转换的,而这个方法默认会获取它的 Unicode 编码,一般的解码器都是采用UTF-8, ISO-8859-1等方式,英文是没有问题,如果是中文,一般情况下Unicode是UTF-16实现,长度2位,而UTF-8编码是3位,这样二维码的编解码就不匹配了。
JqueryQrcode.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;  
}  

 

目录
相关文章
|
2月前
|
Android开发
Airtest遇到模拟器无法输入中文的情况该如何处理?
Airtest遇到模拟器无法输入中文的情况该如何处理?
|
8月前
|
前端开发 JavaScript 测试技术
前端国际化辅助工具——自动替换中文并翻译
前端国际化辅助工具——自动替换中文并翻译
440 0
|
9月前
VS2019.NetCore智能提示英文改为中文
VS2019.NetCore智能提示英文改为中文
123 0
|
11月前
|
编解码 iOS开发
iOS 图片链接含有中文图片无法显示问题解决办法
iOS 图片链接含有中文图片无法显示问题解决办法
180 0
|
12月前
|
JavaScript 测试技术
Easyui 修改jquery validatebox为英文校验提示为中文提示
Easyui 修改jquery validatebox为英文校验提示为中文提示
79 0
|
存储 小程序 Java
【笔记11】uniapp点击复制;mysql数据库存储emoji表情;Java 二维码生成;uniapp引入自定义图标
做公司的项目,给微信小程序体验版添加了新的页面,提交测试的时候没有任何效果。上网搜索了解后,知道:若 pages.json 文件发生了变化,尤其是首页路径发生了变化。代码上传成功后,需要在后台手动设置一下首页路径,或者取消体验版,重新生成体验版二维码。
515 0
【笔记11】uniapp点击复制;mysql数据库存储emoji表情;Java 二维码生成;uniapp引入自定义图标
|
小程序
微信小程序:页面传递中文出现乱码
微信小程序:页面传递中文出现乱码
178 0
|
IDE 测试技术 开发工具
PyCharm设置中文(无需下载中文汉化包)
PyCharm设置中文(无需下载中文汉化包)
172 0
PyCharm设置中文(无需下载中文汉化包)
微信默认表情符号的代码对照表
在微信用户可以发送表情符号,如下图: 这些符号公众平台是将其处理成文本,下面就列出微信默认表情符号代码对照表: 表情图片 字符串代码 替换关键字 /::) 微笑 /::~ 伤心 /::B 美女 /::| 发呆 /:8-) 墨镜 ...
2269 0
Geany包含中文运行报错解决办法
Geany包含中文运行报错解决办法
147 0
Geany包含中文运行报错解决办法