在服务器上进行数据库操作经常会出现插入数据时出现中文乱码的情况,网上这种解决方法数不胜数,但由于版本的不同,很多修改文件方法提供的文件有的时候并不能在该位置找到,这里给出我自己解决问题的方法。
首先中文乱码一般来讲除了web代码未加UTF-8之外,就是数据库本身的问题,mysql默认配置是不支持中文的,这里可以通过进入mysql,敲入代码查看字符集
#查看默认字符集
root> mysql -u root - p
#(输入密码)
mysql> show variables like 'character_set%';
显示
+————————–+—————————-+
| Variable_name | Value |
+————————–+—————————-+
| character_set_client | latin1 |
| character_set_connection | latin1 |
| character_set_database | latin1 |
| character_set_filesystem | binary |
| character_set_results | latin1 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+————————–+—————————-+
可以看出 mysql有很多默认字符集是默认采用latin1格式的,那么我们要把他修改成utf-8
打开linux,找到etc/mysql/mysql.conf.d/mysqld.cnf文件
在[mysqld]后加入下列两行代码
character-set-server=utf8
init_connect='SET NAMES utf8'
然后重启mysql服务
/etc/mysql restart
再次查看字符集
#查看默认字符集
root> mysql -u root - p
#(输入密码)
mysql> show variables like 'character_set%';
显示如下
+————————–+—————————-+
| Variable_name | Value |
+————————–+—————————-+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+————————–+—————————-+
将atin1全部改成了utf-8
再次测试插入数据,乱码消失
大功告成