使用PHP向MySQL資料庫匯入資料,中文字元顯示亂碼問題

weixin_34365417發表於2016-11-03

導致中文顯示亂碼的根本原因是因為編碼方式。一般要想正確顯示中文,都會用UTF-8的編碼方式,因為UTF-8使用三個位元組來儲存一個字元,所以理論上它可以表示2^24=16,777,216個字元,它完美的相容了所有的文字。當出現資料庫中中文字元亂碼的情況,可以從一下幾個方面去排查原因:
檢查匯入的資料的編碼方式是不是UTF-8。
檢查建立資料庫和表格的時候有沒有指定編碼方式為UTF-8。
檢查MySQL伺服器使用的編碼方式。

前面兩點比較容易,針對第三點這裡展開介紹。
開啟終端,輸入命令:" mysql -u "使用者名稱" -p "
回車再輸入密碼即可進入MySQL管理介面。檢視當前MySQL伺服器的編碼方式,輸入命令:" show variables like 'character%'; " 即可,先是結果如下:

mysql> show variables like 'character%';
+--------------------------+---------------------------------------------------------+
| Variable_name | Value |
+--------------------------+---------------------------------------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /usr/local/mysql-5.7.13-osx10.11-x86_64/share/charsets/ |
+--------------------------+---------------------------------------------------------+
8 rows in set (0.01 sec)

一定要確保所有采用的編碼方式為UTF-8,如果有發現採用其他的編碼方式,可以修改MySQL的配置檔案。Windows下可以進入MySQL的安裝目錄,
找到my.ini或者mysql.ini在[client]和[mysql]欄下新增:default-character-set=utf8
在[mysqld]欄下新增: character-set-server=utf8
然後重啟MySQL伺服器,即可永久改變伺服器編碼方式。Mac OS的環境下,可以在 /etc 目錄下以同樣的方式編輯 my.cnf 檔案。
需要注意的是Mac OS預設在 /etc 目錄下沒有 my.cnf 檔案,需要找到MySQL的安裝目錄(以我的電腦為例,MySQL安裝在/usr/local/mysql-5.7.13-osx10.11-x86_64),進入之後找到 support-files 資料夾,從裡面拷貝檔案my-default.cnf 到 /etc 並修改名稱為 my.cnf,再進行修改。切記不要直接修改 my-default.cnf 檔案,因為它是作為模版使用的。
也可以在命令列使用命令:set character_set_server = utf8 來設定編碼方式,但是需要注意的是使用這種方法設定的效果僅限於當前會話,當你關閉終端後,相關的引數還是恢復到了原始的值!

相關文章