目前有没有Nodejs支持utf 8字符的二维码库?

目前有没有Nodejs支持utf 8字符的二维码库?

在npm上面找到这个目前用得最多人的库… https://github.com/soldair/node-qrcode

然后搞了接近一个上午,都折腾不出如何支持utf8 字符,有没有人搞过,求分享啊…

9 回复

当然可以。Node.js 社区中确实存在一些支持 UTF-8 字符的二维码生成库。其中比较流行的有 qrcodeqr-image 等。让我们来看一下如何使用 qrcode 库来生成包含 UTF-8 字符的二维码。

示例代码

首先,你需要安装 qrcode 库:

npm install qrcode

接下来,你可以使用以下代码来生成包含 UTF-8 字符的二维码:

const qr = require('qrcode');

// 示例文本,包含 UTF-8 字符
const text = '你好,世界!';

// 生成二维码并保存到文件
qr.toFile('./qrcode.png', text, {
    color: {
        dark: '#000000', // 二维码颜色
        light: '#ffffff' // 背景颜色
    }
}, function (err) {
    if (err) throw err;
    console.log('QR Code has been generated successfully.');
});

解释

  1. 安装库:我们使用 npm 安装了 qrcode 库。
  2. 导入库:在代码中使用 require 导入 qrcode 库。
  3. 定义文本:定义一个包含 UTF-8 字符的字符串。
  4. 生成二维码:使用 qr.toFile 方法将包含 UTF-8 字符的文本转换为二维码,并保存到指定路径(例如 ./qrcode.png)。
  5. 配置颜色:通过 color 选项自定义二维码的颜色和背景颜色。
  6. 错误处理:在回调函数中处理可能发生的错误。

通过这种方式,你可以轻松地生成包含 UTF-8 字符的二维码。如果你需要将二维码直接输出到网页或终端,也可以使用 qr.toDataURLqr.toString 方法,具体可以根据你的需求选择合适的方法。

希望这些信息对你有所帮助!


你把字符转转为base64编码,不就可以了吗

好办法!!!

不过容量就歇菜了…10来个字就读不出来…

我联系qrcode 的作者,然后…支持utf 8 了…

这个repo的作者的发型真不是一般的牛

have a try 但是他不支持中文,:( 可以通过以下方法转码:

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

目前,node-qrcode 库确实支持 UTF-8 字符。你可以通过安装 qrcode 包来实现二维码生成,该包是 node-qrcode 的一个分支,并且已经修复了一些早期版本中的问题。

首先,你需要安装 qrcode 包:

npm install qrcode

接下来,你可以使用以下示例代码生成包含 UTF-8 字符的二维码:

const qrcode = require('qrcode');

// 示例文本(包含中文字符)
const text = "你好,世界!";

// 生成二维码并输出到文件
qrcode.toFile('./qrcode.png', text, {
    errorCorrectionLevel: 'H', // 错误纠正级别
    margin: 4                  // 边距
}, (err) => {
    if (err) throw err;
    console.log('二维码已生成');
});

上述代码会将包含 UTF-8 字符的文本转换为二维码,并保存到当前目录下的 qrcode.png 文件中。如果你希望直接输出到 HTML 页面或控制台,可以使用以下方法:

qrcode.toString(text, { errorCorrectionLevel: 'H' }, (err, url) => {
    if (err) throw err;
    console.log(url); // 输出二维码内容(以字符串形式)
});

这样你就可以看到包含 UTF-8 字符的二维码字符串。通过以上方式,你可以轻松地生成包含 UTF-8 字符的二维码。

回到顶部