我有一个php代码和node js代码,可以保存和获取mysql数据库的一些信息。有些数据是外文的。所有编码(数据库、表、字段)都设置为utf8。
如果我发送类似“的邮件”якийсь текст" 通过php访问数据库,在数据库中ñðºð¸ð¹ññœ ñ‚ðµðºññ‚" 如果我用php从数据库中检索这个文本якийсь текст" 这很好。
但是当我用node向db发送相同的文本时,在db中它将按原样保存(якийсь текст) 但是当用php从db中检索它时,我得到的只是问号。在节点mysql.createconnection中,我设置了charset:'utf8'并添加了conc.query(“set names utf8”)。
所以我不确定我做错了什么。
谢谢
1条答案
按热度按时间ffvjumwh1#
那是莫吉巴克。看看这个原因。
这也讨论了“问号”。
既然你有两个症状,我建议你至少有两个编码错误。因此,请参阅该链接中的“最佳实践”。
告诉我们:
连接字符串
SHOW CREATE TABLE
SELECT HEX(col), col FROM tbl WHERE ...
它可能是“双重编码”--这是阴险的,因为它看起来没问题,除非你比较字符串。utf-8型
як
是十六进制D18F D0BA
. 然而,如果双重编码,你会得到C391 C28F C390 C2BA
这个SET NAMES utf8
本该帮忙的;但这只是5件需要匹配的事情中的一件。node.js需要
(或utf8mb4)