Node.js将表情符号保存到MySQL中变成问号

4

我可以使用php pdo在同一个托管数据库中存储表情符号,但我无法使用node js实现。

我正在使用下面的代码连接mysql和Node js。但是当我尝试保存带有表情符号的文本时,表情符号会以问号的形式保存到数据库中。

 var con = mysql.createConnection({
    host: '127.0.0.1',
    port: 3306,
    user: 'db_user',
    password: 'db_password',
    database: 'db_name',
    charset: 'utf8mb4',
});


  con.connect(
    function (err) {
        if (err) {
            console.log("ERROR: ");
            throw err;
        } else {
            con.query('INSERT INTO messages (message_from, message_to,message) VALUES (?, ?, ?);', [message_from, message_to,message_text],
                function (err, results, fields) {
                    if (err) throw err;
                    else console.log('Inserted ' + results.affectedRows + ' row(s).');
                });
            con.end(
                function (err) {
                    if (err) throw err;
                });
        }
    });

我也尝试过

collation: "utf8mb4_general_ci",

但无论如何都无法工作。

编辑:表格和数据类型也是utf8mb4

在这里输入图片描述


1
请添加一个用于消息的创建表语句,如果双方都使用utf8mb4,那就不会有问题。 - nbk
我添加了照片。双方都是utf8mb4。 - Atakan Akbulut
你的照片显示了不同的排序规则,请尝试使用相同的排序规则。 - nbk
1
请添加 utf8mb4_general_ci。我曾经遇到过同样的问题,将列排序规则更改为 utf8mb4_general_ci 后,问题似乎得到了解决。 - Salvino D'sa
1个回答

2

我按照评论所说更改了排序规则,然后它就起作用了。

将 "utf8mb4_general_ci" 更改为 "utf8mb4_turkish_ci"。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接