Linux下MySQL出現亂碼的解決方法以及如何設置編碼方式

問題分析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控制檯查看:

這裏寫圖片描述

相關文章
相關標籤/搜索