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

 

相关文章
CKEditor5 支持 WPS 贴贴文字图片,默认贴贴进入空白空格
CKEditor5 支持 WPS 贴贴文字图片,默认贴贴进入空白空格
497 0
Airtest遇到模拟器无法输入中文的情况该如何处理?
Airtest遇到模拟器无法输入中文的情况该如何处理?
114 0
VS2019.NetCore智能提示英文改为中文
VS2019.NetCore智能提示英文改为中文
269 0
iOS 图片链接含有中文图片无法显示问题解决办法
iOS 图片链接含有中文图片无法显示问题解决办法
246 0
微信默认表情符号的代码对照表
在微信用户可以发送表情符号,如下图: 这些符号公众平台是将其处理成文本,下面就列出微信默认表情符号代码对照表: 表情图片 字符串代码 替换关键字 /::) 微笑 /::~ 伤心 /::B 美女 /::| 发呆 /:8-) 墨镜 ...
2704 0
Python编程:sublime打开中文文本乱码
Python编程:sublime打开中文文本乱码
157 0
Python编程:sublime打开中文文本乱码
PyCharm设置中文(无需下载中文汉化包)
PyCharm设置中文(无需下载中文汉化包)
270 0
PyCharm设置中文(无需下载中文汉化包)
Python mapfinance库②中文标题乱码 与 显示负数 解决方案
Python mapfinance库②中文标题乱码 与 显示负数 解决方案
681 0
Python mapfinance库②中文标题乱码 与 显示负数 解决方案
Windows 技术篇-搜狗输入法中文状态下却输入为英文,原因及解决办法。明明是中文却输入不了中文,只能输入英文
Windows 技术篇-搜狗输入法中文状态下却输入为英文,原因及解决办法。明明是中文却输入不了中文,只能输入英文
1253 0
Windows 技术篇-搜狗输入法中文状态下却输入为英文,原因及解决办法。明明是中文却输入不了中文,只能输入英文
如何修改Qt标准对话框的文字(例如,英文改成中文)
如何修改Qt标准对话框的文字(例如,英文改成中文)
693 0
如何修改Qt标准对话框的文字(例如,英文改成中文)
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等