如何解决mysql中文乱码问题

如何解决mysql中文乱码问题

在我们项目开发中经常会用到mysql数据库,而在数据库保存中文字符经常会遇到中文乱码情况,接下来我来介绍一下解决mysql中文乱码问题。

1、查看mysql数据库使用编码格式的命令

命令1:show variables like '%char%';

如下图所示,我们可以看到character_sert_database与character_set_server的字符集都是latin1.在mysql数据库中server,database,table的字符集默认都是latin1。 image.png

命令2:show variables like 'collation%';

如下图所示,我们可以看到collation_database与collation_server的字符集都是latin1_swedish_ci。 image.png

想要彻底解决中文乱码的问题,需要做到如下要求:

  • 要保证数据库中存的数据与数据库编码一致,即数据编码与character_set_database一致;
  • 要保证通讯的字符集与数据库的字符集一致,即character_set_client, character_set_connection与character_set_database一致;
  • 要保证SELECT的返回与程序的编码一致,即character_set_results与程序编码一致;
  • 要保证程序编码与浏览器、终端编码一致

2、修改mysql数据库字符编码

mysql设置的范围默认是session范围。如果设置多个会话的字符集那么需要设置global范围,我们需要把mysql设置为global范围才可彻底解决。

设置字符编码命令

set character_set_database=utf8;
set character_set_server=utf8;

执行结果,如下图所示: image.png

查看字符编码命令

show variables like '%char%';
show variables like 'collation%';

执行结果,如下图所示: image.png

3、设置数据global全局范围

vi /etc/my.cnf     //修改mysql配置文件,请添加以下内容,并注意以下三个参数配置的位置。
[mysqld]
character-set-server=utf8 

[client]
default-character-set=utf8 

[mysql]
default-character-set=utf8

如下图所示: image.png

最后,重启mysql服务来验证它的字符集,发现已经变为utf8,而且在创建表的时候默认就是utf8了。

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×