mysql - NodeJS UTF8 字符串显示为 ??而不是表情符号

标签 mysql node.js emoji

我在 MySQL 行中有一个值,上面写着“测试”并且有一个竖起大拇指的表情符号:
enter image description here

但是当我从数据库中检索这个值时,我在控制台中得到了这个输出:

enter image description here

我该怎么做才能让表情符号在 NodeJS 中工作?

                    database.query({
                        sql: "SELECT * FROM messages ORDER BY timestamp LIMIT 250"
                    }, function(error, results) {
                        if (error) {
                            errorLog("MySQL error: " + error.code);
                        } else {
                            var messages = [];
                            results.forEach(function(result) {
                                console.log("pushing with msg " + result.message);
                                messages.push({userID: String(result.sender), name: String(result.senderName), message: String(result.message)});
                            });
                        }
                    });

最佳答案

在尝试各种设置后找到了解决方案。当您连接到 MySQL 服务器时,您必须像这样指定首选项 charset: 'utf8mb4':

var database = mysql.createConnection({
    host: 'localhost',
    user: 'account',
    password: '1234',
    database: 'database',
    charset: 'utf8mb4'
});

关于mysql - NodeJS UTF8 字符串显示为 ??而不是表情符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42355132/

相关文章:

php - 检索 mysql 数据并输出为脚本。

Mysql、php 查询 WHERE 语句、记录集在发布日期+1 天后过期?

php - 如何在数据库表中存储复选框值

javascript - 为什么匹配表情符号的正则表达式也会匹配移动设备上的非表情符号( ' and ")?

python - 计算每个数据框行中的表情符号数量

java - 将 jsonarray 转换为字符串

mysql - 检查表a是否存在表b中的主键

javascript - 根据条件注释/取消注释代码

node.js - Sentry 不会向所需邮件抛出错误

react-native - 如何自动打开表情符号键盘? [ react native ]