Windows系统下MySQL5.7中文乱码的解决

时间:2024-04-07 11:11:05

【描述】win10系统,Mysql5.7安装版,出现中文乱码问题,数据库和数据库表均已设置UTF-8编码,但是依旧出现乱码。

【经历】上网查了,说要修改my.ini,但是在C:\Program Files\MySQL\MySQL Router 8.0\etc目录下以及C:\Program Files\MySQL\MySQL Server 5.7目录下均未找到该文件。

有一种方法:显示隐藏的ProgramData文件夹,将C:\ProgramData\MySQL\MySQL Server 5.7下的my.ini复制到安装目录C:\Program Files\MySQL\MySQL Server 5.7下,然后运行my.ini里面的提到的命令,试了几下,也没用,可能是自己不太会弄吧。

【方法】于是就直接修改了C:\ProgramData\MySQL\MySQL Server 5.7下的my.ini文件。

【步骤】

1、显示隐藏文件夹

Windows系统下MySQL5.7中文乱码的解决

2、找到C:\ProgramData\MySQL\MySQL Server 5.7下的my.ini文件,右键用Notepad++打开

Windows系统下MySQL5.7中文乱码的解决

3、找到[mysql],在# default-character-set=的下一行添加default-character-set=utf8(图中第67行)

Windows系统下MySQL5.7中文乱码的解决

4、找到[mysqld],在# character-set-server=的下一行添加character-set-server=utf8(图中第102行)

Windows系统下MySQL5.7中文乱码的解决

5、保存文件,重启数据库,测试

【效果】

修改之前

Windows系统下MySQL5.7中文乱码的解决

修改之后

Windows系统下MySQL5.7中文乱码的解决

【变化】character_set_database和character_set_server的值由原来的latin1变为utf8

【说明】我的MySQL安装好后,使用过一段时间,之前没涉及中文字符(当然,之前每次新建数据库时都会设置UTF-8编码),后面发现有中文乱码问题,经过一番折腾之后,无奈的我直接修改了隐藏的my.ini文件,修改好后,重新试了一下,不会乱码了。

不过还有几个编码是gbk,而不是utf8(如图所示),也试过在[client]中配置default-character-set=utf8和在[mysqld]中配置collation-server = utf8_general_ci init_connect='SET NAMES utf8',但是都没用,那三个依旧还是gbk,不过目前看来,不会有影响。(我每次新建数据库时都会设置UTF-8编码,并且在连接数据库时,会在url中加上?characterEncoding=utf-8)

在命令行中输入 set names utf8;可以修改那3个“老顽童”

Windows系统下MySQL5.7中文乱码的解决

具体此方法是否会有“后遗症”尚不清楚,不过目前来看确实解决了我的中文乱码问题。

【建议】修改隐藏的my.ini之前,最好先备份一个,万一改崩了,还有“后悔药”。另外,折腾完之后,建议去掉勾选的“查看隐藏的项目”,既然它们想藏起来就让它们藏吧,哪天确实需要再用它们的时候,再召唤,万一误删了这些“害羞”的重要文件就麻烦了。