节点js中的非英语字符编码

zaqlnxep  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(363)

我有一个php代码和node js代码,可以保存和获取mysql数据库的一些信息。有些数据是外文的。所有编码(数据库、表、字段)都设置为utf8。
如果我发送类似“的邮件”якийсь текст" 通过php访问数据库,在数据库中ñðºð¸ð¹ññœ ñ‚ðµðºññ‚" 如果我用php从数据库中检索这个文本якийсь текст" 这很好。
但是当我用node向db发送相同的文本时,在db中它将按原样保存(якийсь текст) 但是当用php从db中检索它时,我得到的只是问号。在节点mysql.createconnection中,我设置了charset:'utf8'并添加了conc.query(“set names utf8”)。
所以我不确定我做错了什么。
谢谢

ffvjumwh

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需要

var connection = mysql.createConnection({ ... , charset : 'utf8'});

(或utf8mb4)

相关问题