【问题标题】:NodeJS - MySQL and Unicode strings being garbeledNodeJS - MySQL 和 Unicode 字符串出现乱码
【发布时间】:2014-05-24 04:46:36
【问题描述】:

我有一个 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 格式正确转发,只是当它被发送到数据库进行存储时,它被存储为像“??? ??????”例如。

乱码行示例:

有谁知道可能出了什么问题?

提前致谢。

【问题讨论】:

    标签: mysql node.js unicode


    【解决方案1】:

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

    【讨论】:

    • 将排序规则更改为 utf8_general_ci ,它仍然显示??????当我尝试插入 unicode 时。
    • 插入时你的sql界面默认字符编码是什么? [链接]dev.mysql.com/doc/refman/5.1/en/…
    • 是的。看起来数据库和服务器字符集是 latin1?
    • 是的,我只是将其更改为这个,但它仍然无法正常工作,虽然现在它没有插入????????,它什么也没插入(它的空白):puu.sh/8Yh7Q.png跨度>
    • 还有character_set_server stackoverflow.com/questions/3513773/…
    猜你喜欢
    • 2014-12-03
    • 2011-11-26
    • 1970-01-01
    • 1970-01-01
    • 2011-04-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-30
    相关资源
    最近更新 更多