欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Mac下MySQL中文乱码问题解决

程序员文章站 2022-03-19 22:06:56
...

作为一个一专多能的ScrumMaster,编码的基本技能还是需要的,最近因为换了个电脑,装软件的过程真的快折腾的我不行了,这不,今天又遇了Mac本地安装的MySQL写入中文时乱码的问题。经过又一番折腾,终于搞好了。

1. 进入MySQL命令行

本地数据库:

mysql -u root -p

其中root是你要登录的MySQL账号,回车后输入密码;也可以p后不加空格,直接加密码,回车就登录了。

远程数据库:

mysql -hxx.xx.xx.xx -u root -pxxx

其中-h是你要登录的远程MySQL服务器的IP地址。

2. 查看数据库编码

终端依次输入:

show databases; #显示MySQL有多少个数据库实例
use XXX; #选择出问题的数据库实例
show variables like 'character_set_%'; #查看编码

就可以看到数据库的编码信息了:

+--------------------------+-----------------------------------------------------------+
| Variable_name            | Value                                                     |
+--------------------------+-----------------------------------------------------------+
| character_set_client     | utf8                                                      |
| character_set_connection | utf8                                                      |
| character_set_database   | utf8mb4                                                   |
| character_set_filesystem | binary                                                    |
| character_set_results    | utf8                                                      |
| character_set_server     | latin1                                                    |
| character_set_system     | utf8                                                      |
+--------------------------+-----------------------------------------------------------+

这时发现character_set_server的编码格式是latin1,而其他格式都是utf8,问题也就出在这里。

3.修改数据库编码

一开始我是在命令行直接修改的编码格式:

SET character_set_server='utf8';

修改之后再次执行命令:

show variables like 'character_set_%';

发现数据库的编码格式已修改:

+--------------------------+-----------------------------------------------------------+
| Variable_name            | Value                                                     |
+--------------------------+-----------------------------------------------------------+
| character_set_client     | utf8                                                      |
| character_set_connection | utf8                                                      |
| character_set_database   | utf8mb4                                                   |
| character_set_filesystem | binary                                                    |
| character_set_results    | utf8                                                      |
| character_set_server     | utf8                                                      |
| character_set_system     | utf8                                                      |
+--------------------------+-----------------------------------------------------------+

但是我再次执行数据库的操作,发现插入中文时还是乱码,即使重启了数据库服务也还是不行。

最后搜索到一种方法,终于解决了我的问题,方法如下:

cd /etc
sudo su
vim my.cnf

在打开的my.cnf文件中添加以下数据:

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

编辑完以后,按esc退出编辑,然后输入:wq!保存退出。

重启数据库服务,问题解决。

如果重启以后还是不行,你可以重新创建数据库和表再试下。