Nodejs mysql-native 两步解决读写中文乱码问题

Nodejs mysql-native 两步解决读写中文乱码问题

1、定位node_modules/mysql-native/lib/……query.js 105行

var charset = this.connection.charset;

修改为

var charset = this.client.charset;

2、在自己代码中加入

db.query("SET character_set_connection=utf8, character_set_results=utf8, character_set_client=binary");

到这里读写中文乱码问题已经解决,(如果没解决说明你人品差!)


2 回复

Nodejs mysql-native 两步解决读写中文乱码问题

在使用 mysql-native 模块与 MySQL 数据库交互时,可能会遇到中文乱码的问题。以下是两个步骤来解决这个问题。

步骤一:修改 query.js

首先,你需要定位到 node_modules/mysql-native/lib/……query.js 文件的第 105 行,将以下代码:

var charset = this.connection.charset;

修改为:

var charset = this.client.charset;

这一步主要是为了确保字符集设置正确。

示例代码

假设你的 query.js 文件路径如下:

// node_modules/mysql-native/lib/query.js
module.exports = function(query) {
    // 其他代码...
    
    var charset = this.client.charset;  // 修改后的代码
    
    // 其他代码...
}

步骤二:在自己的代码中设置字符集

在你的应用程序中,在执行任何数据库操作之前,添加以下 SQL 语句:

db.query("SET character_set_connection=utf8, character_set_results=utf8, character_set_client=binary", (err) => {
    if (err) throw err;
    console.log('Character set settings updated.');
});

这段代码的作用是显式地设置连接、结果和客户端的字符集为 utf8,以确保数据能够正确地被读取和写入。

示例代码

假设你有一个数据库连接对象 db,你可以这样使用:

const db = require('./database');  // 假设这是你的数据库连接文件

db.connect((err) => {
    if (err) throw err;
    console.log('Connected to database.');

    db.query("SET character_set_connection=utf8, character_set_results=utf8, character_set_client=binary", (err) => {
        if (err) throw err;
        console.log('Character set settings updated.');
        
        // 继续执行其他数据库操作
    });
});

总结

通过上述两个步骤,你可以有效地解决使用 mysql-native 模块时可能出现的中文乱码问题。希望这些步骤对你有所帮助!


为了确保Node.js应用程序中的MySQL数据库读写中文时不会出现乱码问题,可以通过以下两步来解决:

第一步:修改mysql-native库文件

打开node_modules/mysql-native/lib/query.js文件,在第105行找到:

var charset = this.connection.charset;

将其修改为:

var charset = this.client.charset;

这一步是为了确保字符集设置正确地应用到客户端。

第二步:在应用程序中添加SQL语句

在执行任何查询之前,可以在你的应用程序中添加以下SQL语句:

db.query("SET character_set_connection=utf8, character_set_results=utf8, character_set_client=binary", (err) => {
    if (err) throw err;
    // 继续执行其他数据库操作
});

通过上述两步,你可以确保MySQL数据库与Node.js应用程序之间的通信使用正确的字符集。这将有助于解决中文字符的乱码问题。

如果你发现中文字符仍然乱码,可以检查数据库表的字符集是否设置为utf8utf8mb4,并且确保所有相关的配置都正确无误。

回到顶部