問題分析mysql
MySQL建立數據庫時指定編碼很重要,不少開發者都使用了默認編碼,安裝了以後不會再去設置編碼的問題(固然可能我很初級的緣由),亂碼問題但是防不勝防。sql
網頁數據通常採用UTF8編碼,而數據庫默認爲latin1 。咱們能夠經過修改數據庫默認編碼方式爲UTF8來減小數據庫建立時的設置,也能最大限度的避免因粗心形成的亂碼問題。數據庫
咱們遵循的標準是,數據庫,表,字段和頁面或文本的編碼要統一塊兒來,咱們能夠經過命令查看數據庫當前編碼:編碼
mysql> SHOW VARIABLES LIKE 'character%';rest
這裏寫圖片描述server
這是在出現亂碼的時候顯示的內容,發現不少對應的都是 latin1,咱們的目標就是在下次使用此命令時latin1能被UTF8取代。 問題解決圖片
在mysql控制檯經過編碼命令進行設置:開發
SET character_set_client = utf8; SET character_set_connection = utf8; SET character_set_database = utf8; SET character_set_results = utf8; SET character_set_server = utf8;it
而後 mysql> SHOW VARIABLES LIKE 'character%'; 你能夠看到全變爲 utf8 。io
可是,這只是一種假象。此種方式只在當前狀態下有效,當重啓數據庫服務後失效。 本身能夠嘗試一下!
這也是網上不少的解決方法,不見效果,本身當時也嘗試了不少次,不成功!這裏提出來,但願你們不要採坑!
如何正確的修改,咱們只有修改my.cnf(通常都是在/etc/my.cnf目錄下)文件,
從my.cnf下手(標籤下沒有的添加,有的修改)
補充:
在Server version: 5.7.17 MySQL Community Server (GPL)版本中,配置文件的位置是:/etc/mysql/mysql.conf.d/mysqld.cnf
[client] default-character-set=utf8 [mysql] default-character-set=utf8 [mysqld] default-character-set=utf8
以上3個section都要加default-character-set=utf8,平時咱們可能只加了mysqld一項。
注意:上邊的配置須要根據具體的mysql版本,不一樣的mysql版本可能不包含上述的三個section,也沒有必要所有都設置,平時咱們可能只加了mysqld一項。
例如個人配置文件和修改以後的效果(注意個人mysql版本):
這裏寫圖片描述
個人這個my.cnf文件只有mysqld 這個section,所以能夠直接加上default-character-set=utf8 便可。
若是,你的配置文件含有client、mysql 標籤的話,能夠在下邊加入,例以下邊的配置示例:
這裏寫圖片描述
修改以後,而後重啓mysql服務:
service mysqld restart
而後登入mysql控制檯查看:
這裏寫圖片描述