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

 

目录
相关文章
|
1月前
|
JavaScript 前端开发
文本,wangEditor5教程-上传图片,在开发文档的菜单配置当中,去搜索里搜索图片,也可以找到,上传图片必须有服务端的图片,验证接口正确用postman,wangEditor的postman接口
文本,wangEditor5教程-上传图片,在开发文档的菜单配置当中,去搜索里搜索图片,也可以找到,上传图片必须有服务端的图片,验证接口正确用postman,wangEditor的postman接口
下载文档【报错的小技巧】(了解一下)
下载文档【报错的小技巧】(了解一下)
40 0
VS2019.NetCore智能提示英文改为中文
VS2019.NetCore智能提示英文改为中文
179 0
|
编解码 iOS开发
iOS 图片链接含有中文图片无法显示问题解决办法
iOS 图片链接含有中文图片无法显示问题解决办法
205 0
|
存储 小程序 Java
【笔记11】uniapp点击复制;mysql数据库存储emoji表情;Java 二维码生成;uniapp引入自定义图标
做公司的项目,给微信小程序体验版添加了新的页面,提交测试的时候没有任何效果。上网搜索了解后,知道:若 pages.json 文件发生了变化,尤其是首页路径发生了变化。代码上传成功后,需要在后台手动设置一下首页路径,或者取消体验版,重新生成体验版二维码。
603 0
【笔记11】uniapp点击复制;mysql数据库存储emoji表情;Java 二维码生成;uniapp引入自定义图标
|
IDE 测试技术 开发工具
PyCharm设置中文(无需下载中文汉化包)
PyCharm设置中文(无需下载中文汉化包)
195 0
PyCharm设置中文(无需下载中文汉化包)
微信默认表情符号的代码对照表
在微信用户可以发送表情符号,如下图: 这些符号公众平台是将其处理成文本,下面就列出微信默认表情符号代码对照表: 表情图片 字符串代码 替换关键字 /::) 微笑 /::~ 伤心 /::B 美女 /::| 发呆 /:8-) 墨镜 ...
2381 0
|
IDE 开发工具 C++
VS Code 下载、安装及切换中文和安装C++ 模块
最近趁着疫情,想着找人聊聊天,规划一下自己的人生,聊完发现,这两年就是温水煮青蛙,现在自己的编码能力已经弱到不要不要的了,这节奏就是要完的节奏。
234 0
VS Code 下载、安装及切换中文和安装C++ 模块
Geany包含中文运行报错解决办法
Geany包含中文运行报错解决办法
176 0
Geany包含中文运行报错解决办法
|
PHP
php抓取远程的图片,远程图片名字包含空格和中文
总结:urlencode和rawurlencode两个方法在处理字母数字,特殊符号,中文的时候结果都是一样的,唯一的不同是对空格的处理,urlencode处理成“+”,rawurlencode处理成“%20”。
135 0