前段时间做一个项目,前期数据都会存储在mysql中,数据时通过shell脚本的方式从文档中导入到Mysql中,然后通过workbench终端去查看导入的数据。结果,估计根据标题就能猜到,中文乱码了,从workbench中看到的中文字符乱码了。一直就听说过mysql中如果字符设置不对,中文很容易出现乱码,所以网上有很多资料介绍如何避免中文的乱码。在这儿就不介绍mysql的字符集了,只说说我的中文乱码是怎么被解决掉的。
这个问题通用的解决方法就是——将mysql服务的全部字符集都设置成utf8,可当我按照这样设置后,还是乱码。我这儿是通过shell脚本导入mysql的,文本文档是utf8编码的,可在数据库中用utf8字符集却不能看到正常的字符。既然这样,那一定就是shell连接mysql的字符集不是utf8的,被转换了,所以在shell中,我就在每次操作数据库前,加上一个命令:set names utf8,这样我在workbench上看到的中文字符正常了。
set names 'utf8';insert into tablename。。。
注意:如果使用mysqlclient库,通过程序读取mysql数据,在初始化mysqlclient时,一定也要记得设置utf8的字符集,这样是保证通过程序连接mysql的连接字符集也是utf8,不至于通过程序读取中文出现乱码。