在看廖雪峰老师Python教程的时候就折腾过这个问题,但那时候没有搞定,今天要把中文存入MySQL,发现是乱码,只有改编码才能解决问题。今天运气好,没折腾多久就找到解决方法了。
找到mysql配置文件my.cnf
在任意文件夹页面按住command + shift + g 调出前往文件夹功能,然后输入 /usr/local/mysql/ (廖老师的教程是在/etc/mysql/或/etc/目录,但我的电脑上找不到。)
有人的my.cnf文件就在这个目录,或者在support-files目录下,名字可能叫my-default.cnf,也有可能是其他名字,版本不一样,名字也不一样,这里有点乱,找到把名字改成my.cnf,然后复制到 /usr/local/mysql/ 目录下
修改my.cnf
my.cnf一般在etc/mysql/my.cnf位置。找到后请在以下三部分里添加如下内容:
[client]
default-character-set = utf8mb4
[mysql]
default-character-set = utf8mb4
[mysqld]
character-set-client-handshake = FALSE
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
init_connect='SET NAMES utf8mb4'
重启数据库,通过mysql命令行检查编码:
mysql> show variables like '%char%';
如果都是utf8mb4或utf8,那就是修改成功了
注:MySQL的版本≥5.5.3,才可以把编码设置为utf8mb4,utf8mb4
和utf8完全兼容,但可以显示emoji字符。
已经创建好的数据库和表也可以改成utf8mb4
修改数据库 ALTER DATABASE database_name CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
修改表 ALTER TABLE table_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;