最近我在开发时,在Navicat中看到中文乱码,然后百度查了相关内容,说是Mysql乱码,于是将MySql编码改为utf8,但是还是乱码,于是继续百度,说是Navicat编码和Mysql编码不一致,将Navicat的链接属性改为utf-8,于是改了,依旧显示乱码。于是我就一样一样的解决,先解决了mysql乱码问题,然后解决Navicat乱码问题,详细不中如下:
首先需要确保我们的mysql编码正确,如下我们先进入mysql的控制台
进入控制台后我们通过如下命令查看数据库的编码:
show variables like '%char%';
此处我的已经改成了utf8,如果上面几个属性中value有latin1,说明字符集不是utf8编码,需要改变编码,执行如下命令:
set character_set_client=utf8;
set character_set_connection=utf8;
set character_set_results=utf8;
这里要注意是utf8,不是utf-8;
当然,还有一些资料说需要改mysql配置文件,在mysql安装目录下
因为我是在解决乱码之前改的配置,所以是不是这里起到决定性的作用我也不是很清楚,但是改成utf8也没害处,将my.ini文件中的default-character-set和character-set-server改为utf8
到这里大部分文章说问题就解决了,但是这里又出现了一个问题就是,我在mysql控制台插入中文的时候报错,无法插入中文,最后找到一篇帖子说这是cmd控制台的问题
cmd控制台采用的是gbk编码格式,而我们的mysql是utf8格式,所以这就导致了无法插入中文,所以我们要讲mysql控制台改为gbk,这里讲mysql改为gbk后,在输入中文时,mysql会自动讲gbk转换为utf8
从图中可以看到,插入中文时报错。
执行如下命令,讲编码改为gbk:
set names gbk;
这里可以看到编码改为了GBK,到这里我们可以正常的通过mysql控制台插入中文数据了
下面我们来解决Navicat显示乱码问题
在数据库连接列中右键,选择连接属性
我这里使用的是11.1的版本,缺少一个使用mysql字符集的CheckBox,如果有,则打钩,我看大部分博客对上面编码的选择都是utf-8,这里我也改成了utf-8,但是我的数据查询时依旧乱码,改成Current Windows codepage还是乱码,后来改成了自动,中文正常展示了。
到此所有问题都解决了。
文中主要解决了三个问题:
1.Mysql乱码
2.Mysql无法插入中文
3.Navicat乱码
希望对大家能够有帮助。