您的位置:首页 > 运维架构 > Linux

linux mysql的中文乱码解决方案

2017-04-05 15:42 459 查看
进入mysql查看当前编码:

show variables like "%char%";

+--------------------------+----------------------------+
| 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/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)


我的除了 character_set_system之外其他都是latin1,拉丁字母不支持中文所以会乱码。而在PHP中设置set names utf8实际上相当于同时设置以下三条

SET character_set_client = utf8;

SET character_set_results = utf8;

SET character_set_connection = utf8;

并不能解决问题。

解决步骤如下:

vim /etc/my.cnf

在[client]下新增: default-character-set=utf8

(如果没有client这一项就自己写个client)

在[mysqld]下新增:

default-character-set=utf8

init_connect='SET NAMES utf8'

然后重启mysql服务:

service mysqld restart

再进入Mysql查看编码发现就是utf8了:

show variables like "%char%";

+--------------------------+----------------------------+
| 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/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: