解决nodejs创建连接池获取MySQL数据中文乱码的问题

最近在做一个项目的过程中会遇到node下创建MySQL连接池,请求远程服务器数据时,出现中文乱码。这个问题也是困扰了好久,网上查阅了较多资料,说是因为node暂不支持GBK转码,要导入第三方包,初试没能成功,最后在mysql源码中找到内置字符集定义,用charset成功解决。

在github上找到MySQL的npm包源码,找到charset.js字符集文件,里面有MySQL定义的所有字符集,作为连接时charset的可选属性(有些可能已经失效)。

image

因为utf8以及GBK都没用,最终在多次尝试后(笨办法),用UTF8_GENERAL50_CI完美解决。

1586489836(1).jpg

//创建连接池
var sqlPool = mysql.createPool({ 
             host : 'xx.xx.xx.xx', 
             user : 'xx', 
             password : '****', 
             database:'xx', 
             charset: 'UTF8_GENERAL50_CI'});

如果这种方法不行的话,就只能试导入第三方包,这里提供一个第三方包‘iconv-lite’,在请求到数据回来时,对数据做一层处理。

var iconv = require('iconv-lite');

//使用
if(type=="xx"){//你的判断
return iconv.encode(SarchName, 'utf8');//具体用法建议查看文档
}

你可能感兴趣的:(解决nodejs创建连接池获取MySQL数据中文乱码的问题)