You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

NodeJS 14.5.0连接MySQL 5.5.35读取数据字符乱码问题求解

解决Node.js mysql模块读取MySQL数据的字符乱码问题

我来帮你排查这个字符乱码问题,这类问题通常是数据库存储编码和Node.js连接编码不匹配导致的,咱们一步步来解决:

第一步:先确认数据库端的真实编码情况

你提到原文没提供数据库字符集的具体设置,这是排查的关键。先运行以下SQL命令,获取核心信息:

-- 查看数据库全局字符集相关配置
SHOW VARIABLES LIKE 'character_set%';
SHOW VARIABLES LIKE 'collation%';

-- 查看目标表的字符集和创建语句
SHOW CREATE TABLE your_target_table_name;

-- 查看目标字段的字符集细节
SHOW FULL COLUMNS FROM your_target_table_name LIKE 'your_target_column_name';

这些结果能帮我们确定数据实际的存储编码,以及数据库连接层的默认编码规则。

第二步:调整Node.js连接配置

根据数据库的实际情况,针对性调整连接参数:

情况1:数据库表/字段使用utf8mb4(或utf8)编码

如果你的数据库表和字段本身是utf8mb4(推荐,支持所有Unicode字符)或utf8(你的目标字符ł、ń属于BMP范围,utf8也能覆盖),修改连接配置如下:

const mysql = require('mysql');
const dbConfig = require('../../config/database.json');
dbConfig.connectionLimit = 10;

const connection = mysql.createPool({
  ...dbConfig,
  charset: 'utf8mb4', // 优先用utf8mb4,兼容更多字符
  // 初始化连接时执行SET NAMES,确保连接编码完全匹配
  initConnection: (conn, callback) => {
    conn.query('SET NAMES utf8mb4 COLLATE utf8mb4_unicode_ci', (err) => {
      if (err) return callback(err);
      callback(null, conn);
    });
  }
});

module.exports = connection;

情况2:数据库表/字段是latin1编码,但存储了UTF-8数据(双重编码)

如果你的表字段是latin1,但数据实际是被错误地以UTF-8编码存入的(这种情况很常见),可以先临时用以下方式读取正确内容:

const mysql = require('mysql');
const dbConfig = require('../../config/database.json');
dbConfig.connectionLimit = 10;
dbConfig.charset = 'latin1'; // 先以latin1读取原始字节

const connection = mysql.createPool(dbConfig);

// 读取后转码为UTF-8
connection.query('SELECT your_target_column FROM your_target_table', (err, results) => {
  if (err) throw err;
  const correctedValue = Buffer.from(results[0].your_target_column, 'latin1').toString('utf8');
  console.log(correctedValue); // 应该显示Cieśliński
});

注意:这只是临时方案,长期建议修复数据库编码:先备份数据,再将表转成utf8mb4:

ALTER TABLE your_target_table CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

第三步:验证结果

调整配置后重新读取数据,看是否能正确显示Cieśliński。如果还是有问题,把第一步获取的数据库字符集信息补充上来,我可以帮你进一步排查。

内容的提问来源于stack exchange,提问作者NakedCat

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.09 14:33:00