vue生成二维码中文无法识别的解决方案

biezhiji2周前Vue28

vue中,使用第三方库,比如QRious,生成二维码,如果二维码内容中包含有中文,二维码无法识别,用解码工具也无法解出正确内容。

原因是三方库没有设置正确中文编码,解决办法如下,示例在lib目录中新建一个textcode.js文件,写入下面代码

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

在生成二维码的页面引用:

import { ref } from "vue";
import { utf16to8 } from '@/lib/textcode';

const codetext = ref('您好');

const chineseText = utf16to8( codetext.value ); //二维码内容


相关文章

解决vue项目运行出现 errno: -4058, code: ‘ENOENT‘, syscall: ‘spawn cmd‘的问题

解决vue项目运行出现 errno: -4058, code: ‘ENOENT‘, syscall: ‘spawn cmd‘的问题

场景:vue项目在放在移动硬盘中,原电脑运行正常,将硬盘插到另外一台电脑后,运行npm run dev后出现如下错误很明显,本来是运行成功了的,但是马上就退出了进程。解决过程:先清除缓存,输入命令:n...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。