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

   Linux下MySQL出现乱码的解决方法以及如何设置编码方式

2018-05-13 10:43 519 查看
问题分析

MySQL创建数据库时指定编码很重要,很多开发者都使用了默认编码,安装了之后不会再去设置编码的问题(当然可能我很初级的原因),乱码问题可是防不胜防。

网页数据一般采用UTF8编码,而数据库默认为latin1 。我们可以通过修改数据库默认编码方式为UTF8来减少数据库创建时的设置,也能最大限度的避免因粗心造成的乱码问题。

我们遵循的标准是,数据库,表,字段和页面或文本的编码要统一起来,我们可以通过命令查看数据库当前编码:

mysql> SHOW VARIABLES LIKE 'character%';

这里写图片描述

这是在出现乱码的时候显示的内容,发现很多对应的都是 latin1,我们的目标就是在下次使用此命令时latin1能被UTF8取代。
问题解决

1、第一阶段:*

在mysql控制台通过编码命令进行设置:

SET character_set_client = utf8;
SET character_set_connection = utf8;
SET character_set_database = utf8;
SET character_set_results = utf8;
SET character_set_server = utf8;

然后 mysql> SHOW VARIABLES LIKE 'character%'; 你可以看到全变为 utf8 。

但是,这只是一种假象。此种方式只在当前状态下有效,当重启数据库服务后失效。 自己可以尝试一下!

这也是网上很多的解决方法,不见效果,自己当时也尝试了很多次,不成功!这里提出来,希望大家不要采坑!

2、第二阶段:*

如何正确的修改,我们只有修改my.cnf(一般都是在/etc/my.cnf目录下)文件,

从my.cnf下手(标签下没有的添加,有的修改)

补充:

在Server version: 5.7.17 MySQL Community Server (GPL)版本中,配置文件的位置是:/etc/mysql/mysql.conf.d/mysqld.cnf

[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
[mysqld]
default-character-set=utf8

以上3个section都要加default-character-set=utf8,平时我们可能只加了mysqld一项。

注意:上边的配置需要根据具体的mysql版本,不同的mysql版本可能不包含上述的三个section,也没有必要全部都设置,平时我们可能只加了mysqld一项。

例如我的配置文件和修改之后的效果(注意我的mysql版本):

这里写图片描述

我的这个my.cnf文件只有mysqld 这个section,因此可以直接加上default-character-set=utf8 即可。

如果,你的配置文件含有client、mysql 标签的话,可以在下边加入,例如下边的配置示例:

这里写图片描述

修改之后,然后重启mysql服务:

service mysqld restart

然后登入mysql控制台查看:

这里写图片描述
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: