![](/img/trans.png)
[英]How to insert Chinese characters into a MySQL database from Node.js?
[英]Insert Chinese character into MySQL through node.js
我现在使用 Node.js 和 mysql 驱动程序连接到旧的 MySQL db(版本:4.0.18-nt)。 数据库默认排序规则是 latin1。
mysql 字符设置:
character set latin1 latin1
character sets latin1 big5 czech euc_kr gb2312 gbk latin1_de sjis tis620 ujis dec8 dos german1 hp8 koi8_ru latin2 swe7 usa7 cp1251 danish hebrew win1251 estonia hungarian koi8_ukr win1251ukr greek win1250 croat cp1257 latin5 latin1 big5 czech euc_kr gb2312 gbk latin1_de sjis tis620 ujis dec8 dos german1 hp8 koi8_ru latin2 swe7 usa7 cp1251 danish hebrew win1251 estonia hungarian koi8_ukr win1251ukr greek win1250 croat cp1257 latin5
当我在数据库中插入汉字时,它会变成乱码。
var mysql = require('mysql');
var connection = mysql.createConnection({
host: 'localhost',
user: 'user',
password: 'pwd',
database: 'user',
charset: 'BIG5' // I have tried 'utf8'/'latin1'/'BIG5'
});
connection.query(`update user set chi_surname = '陳', chi_other_name = '陳大文' where user_id = '1'`
, async function (error, results, fields) {
if (error) throw error;
console.log('The solution is: ', results);
console.log(fields)
});
结果为 mysql
chi_surname chi_other_name
�䒰 �䒰憭扳��
I tried to convert above text (�䒰�䒰憭扳��) to utf-8, then it show 陳大文.
如果我直接更新 phyMyAdmin 中的字段,它可以正确更新。
chi_surname chi_other_name
陳 大文
似乎 mysql 驱动程序将向 Mysql 中的 Mysql 发送查询,无论我在连接配置中放置什么字符集。
我知道将数据库的默认排序规则更改为 utf-8 可以解决问题,但由于也有许多旧程序调用数据库,因此无法选择更改数据库排序规则。
我还尝试使用第三方库(iconv-lite,编码)在插入之前将单词更改为 BIG5/latin1,但仍然失败。
有什么方法可以在这个数据库中插入汉字吗? 谢谢你。
Node version:node v15.6.0
node-mysql version: 2.18.1
(来自评论)
CREATE TABLE department (
'dept_id' varchar(10) NOT NULL default '',
'dept_code' varchar(10) default NULL,
'chi_name' varchar(50) default NULL,
'eng_name' varchar(50) NOT NULL default ''
) TYPE=MyISAM
A4FBA6C0C657
是牛池灣
的Big5编码。 所以你需要CHARACTER SET big5
。
连接、列定义等。
请提供SHOW VARIABLES LIKE 'char%';
并SHOW CREATE TABLE
。
你似乎已经有了这个:
var connection = mysql.createConnection({ ... , charset : 'big5'});
所以可能在其他地方。
可以让列使用与连接不同的字符集; 应正确处理转换。
请检查 MySQL 版本
SELECT @@version;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.