在看廖雪峰老師Python教程的時候就折騰過這個問題,但那時候沒有搞定,今天要把中文存入MySQL煞赢,發(fā)現(xiàn)是亂碼,只有改編碼才能解決問題哄孤。今天運氣好照筑,沒折騰多久就找到解決方法了。
找到mysql配置文件my.cnf
在任意文件夾頁面按住command + shift + g 調(diào)出前往文件夾功能瘦陈,然后輸入 /usr/local/mysql/ (廖老師的教程是在/etc/mysql/或/etc/目錄凝危,但我的電腦上找不到。)
有人的my.cnf文件就在這個目錄双饥,或者在support-files目錄下,名字可能叫my-default.cnf弟断,也有可能是其他名字咏花,版本不一樣,名字也不一樣阀趴,這里有點亂昏翰,找到把名字改成my.cnf,然后復(fù)制到 /usr/local/mysql/ 目錄下
修改my.cnf
my.cnf一般在etc/mysql/my.cnf位置。找到后請在以下三部分里添加如下內(nèi)容:
[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'
重啟數(shù)據(jù)庫刘急,通過mysql命令行檢查編碼:
mysql> show variables like '%char%';
如果都是utf8mb4或utf8棚菊,那就是修改成功了
注:MySQL的版本≥5.5.3,才可以把編碼設(shè)置為utf8mb4叔汁,utf8mb4
和utf8完全兼容统求,但可以顯示emoji字符。
已經(jīng)創(chuàng)建好的數(shù)據(jù)庫和表也可以改成utf8mb4
修改數(shù)據(jù)庫 ALTER DATABASE database_name CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
修改表 ALTER TABLE table_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;