NodeJS - MySQL和Unicode字符串出现乱码

时间:2014-05-23 20:35:26

标签: mysql node.js unicode

我有一个NodeJS服务器作为消息转发服务运行,我注意到虽然它与英文(ASCII)文本完美配合,但它无法将UTF-8编码的字符串插入MySQL数据库(使用nodejs-mysql驱动程序) )

我尝试过的事情:

conn.query("INSERT INTO messages(content) VALUES("+mysql.escape(content)+")", function(err, result) {
    // ...
}

conn.query("INSERT INTO messages(content) VALUES(?)", [content], function(err, result) {
    // ...
}

两者都不起作用,最终会插入像“???????”这样的字符串进入数据库。

该表使用latin1_swedish_ci作为默认排序规则,使用InnoDB作为引擎。

这不是数据库(MySQL)问题,因为我在PHP中使用相同的代码并且工作正常(使用PHP PDO)

这不是NodeJS(v8)问题,因为消息是以UTF-8格式正确转发的,只是当它被发送到数据库进行存储时,它会被存储为像“??? ?????”例如。

乱码行示例:

enter image description here

有没有人知道可能出现什么问题?

提前致谢。

1 个答案:

答案 0 :(得分:1)

latin1_swedish_ci数据库表本身不能处理UTF-8。它可以以编码格式存储UTF-8,这是PHP-PDO的工作方式。