今天在linux服务器上面,将mysql表导入过来后,查询数据发现好多乱码,又是头疼的中文乱码问题,试了网上不少方法,说一下我解决成功的方法吧。
首先中文乱码一般来讲除了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/my.cnf文件,修改/etc/mysql/my.cnf 这个文件,在对应的地方加上以下代码就ok啦。
[client]
port = 3306
socket = /var/lib/mysql/mysql.sock
default-character-set=utf8
[mysqld]
port = 3306
socket = /var/lib/mysql/mysql.sock
character-set-server=utf8
init_connect='SET NAMES utf8'
[mysql]
no-auto-rehash
然后重启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, 再次测试插入数据,乱码消失
大功告成!!!