node连接mysql乱码
时间: 2023-07-11 13:08:52 浏览: 104
在 Node.js 中连接 MySQL 数据库时,出现乱码的原因可能有以下几种:
1. 数据库字符集与表字符集不一致。
可以通过以下命令查看 MySQL 数据库和表的字符集:
```
SHOW VARIABLES LIKE '%character%';
SHOW CREATE TABLE your_table_name;
```
如果发现字符集不一致,可以通过以下命令修改表的字符集:
```
ALTER TABLE your_table_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
```
2. Node.js 连接 MySQL 时未设置编码。
可以在连接 MySQL 数据库时设置编码参数,如下所示:
```javascript
const mysql = require('mysql');
const connection = mysql.createConnection({
host: 'localhost',
user: 'root',
password: 'password',
database: 'database_name',
charset: 'utf8mb4' // 设置编码
});
connection.connect();
```
3. 数据库中存储的数据本身就存在乱码。
如果是这种情况,需要对数据进行清洗和转换,可以使用 Node.js 中的 `iconv-lite` 库来进行转换。
```javascript
const iconv = require('iconv-lite');
const mysql = require('mysql');
const connection = mysql.createConnection({
host: 'localhost',
user: 'root',
password: 'password',
database: 'database_name'
});
connection.connect();
connection.query('SELECT * FROM your_table_name', (error, results, fields) => {
if (error) throw error;
const data = JSON.parse(JSON.stringify(results));
data.forEach(item => {
item.field_name = iconv.decode(item.field_name, 'gbk'); // 将 gbk 编码转换成 utf-8
});
console.log(data);
});
connection.end();
```
以上是解决 Node.js 连接 MySQL 数据库乱码问题的一些方法,希望对你有所帮助。
阅读全文