【MySQL】解決MySQL中文亂碼問題

問題

當遇到中文亂碼問題時請首先排查是哪個地方亂碼,可能是在網絡通信的兩端,也可能是程序和數據庫對接的過程中,閱讀本文前請先通過調試確認你的亂碼問題出在MySQL。

排查

一般亂碼問題的解決方法無非是把編碼設置爲utf-8

打開MySQL命令行,輸入show variables like '%character%';查看各種變量的編碼:

(截圖爲解決成功的)

如果和截圖值不相符,出現latin1等編碼,則可確定問題應該出在MySQL

解決

將除character_set_filesystem之外的變量值設置爲utf8,設置方法爲命令行輸入:

SET character_set_client='utf8';

其他變量設置方法同上。

然後打開mysql的配置文件。關於文件位置,我的ubuntu系統下在etc/mysql/conf.d/mysql.cnf ,有說在/etc/my.cnf, windows系統在安裝目錄下的my.ini文件,總而言之,如果文件內容是形如


[mysqld]
character-set-server=...
[mysql]
default-character-set=...

則打開正確。

將文件內容修改爲:

[mysqld]
character-set-server=utf8 
[client]
default-character-set=utf8 
[mysql]
default-character-set=utf8

保存並退出。

這樣便解決成功。

注意事項

  1. 修改完成如果沒有效果可嘗試重啓數據庫服務或重啓電腦
  2. 本文所列方法爲全局的解決方法,已經設置默認編碼爲utf8,按照上述操作後無需再在連接數據庫或創建數據庫時後綴設置編碼的代碼,如:jdbc:mysql://localhost:3306/MyDataBase?setEncoding=utf-8...
  3. 重新設置編碼之後,之前創建的數據庫仍會沿用以前的編碼,所以如果想要之前的數據庫中文不亂碼最好刪除數據庫重建,不建議使用alter關鍵字修改,可能出現混亂。查看數據庫和表的編碼的命令是:show create database XXX; 或show create table XXX; 可看到charset=utf-8即爲修改成功。
  4. 修改文件和命令行設置變量編碼的操作可能存在重複,是博主的解決流程,兩種都可以操作一下,最後達到效果即可。

參考文章:https://www.cnblogs.com/zhchoutai/p/7364835.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章