我有一个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格式正确转发的,只是当它被发送到数据库进行存储时,它会被存储为像“??? ?????”例如。
乱码行示例:
有没有人知道可能出现什么问题?
提前致谢。
答案 0 :(得分:1)
latin1_swedish_ci数据库表本身不能处理UTF-8。它可以以编码格式存储UTF-8,这是PHP-PDO的工作方式。