首页 > nodejs 查询mysql数据库的数据显示乱码

nodejs 查询mysql数据库的数据显示乱码

nodejs 查询mysql数据库的数据显示乱码

运行nodejs代码,结果如下:

D:\Program Files\nodejs>NODE E:\project\test\sqlServer.js
[ RowDataPacket { id: 1, name: 'ÕÅÈý', sex: 'Å®' },
RowDataPacket { id: 2, name: 'ÕÅÄÐ', sex: 'Å®' } ]
[ RowDataPacket { id: 1, name: 'ÕÅÈý', sex: 'Å®' },
RowDataPacket { id: 2, name: 'ÕÅÄÐ', sex: 'Å®' } ]

nodejs代码如下:
var mysql=require('mysql');
var client = mysql.createConnection({
user: 'root',
password: '',
database:'user',
});
client.connect(function (err) {

if(err)
    console.log('与mysql数据库建立连接失败');

});
client.query(
'SELECT * FROM userinfo',
function selectCb(err, results, fields) {

if (err) {  
  console.log(err);
} 
else{      
  if(results)
  {
      for(var i = 0; i < results.length; i++)
      {
          console.log(results);
      }
  }  
  else{
      console.log("失败");
  }  
  }    
client.end();  

}
);

mysql数据库的语句如下:

create database user character set UTF8;

use user;

create table userinfo
(
id int primary key auto_increment not null,
name varchar(20) not null,
sex varchar(2) not null
);

insert into userinfo
(name,sex)
values
('张三','女');
insert into userinfo
(name,sex)
values
('张男','女');

在mysql下查询的结果:

请问这个问题应该怎样解决?还望路过大虾指点迷津。


连上数据库之后看下SHOW VARIABLES LIKE ‘character%’;

如果不是utf8的,在配置文件中全部改掉,有好几个参数的,都改掉,然后重启

mysql.createConnection里面确认下指定字符集是不是用的charset关键字


连接加一个参数charset试试?

var client = mysql.createConnection({ 
user: 'root', 
password: '',
database:'user',
charset:'UTF8_GENERAL_CI'
});

或者在默认的mysqld的配置文件my.ini中的mysqld节加入character-set-server=utf8后,然后重启mysqld服务(我使用的是mariadb,不确定这个配置是否可以在mysql中使用)

【热门文章】
【热门文章】