對於MySQL中文亂碼問題(我的是Ubuntu Linux系統),在網上看了很多解決方案,很多說要修改MySQL的設定檔,於是我按照下面的方法修改:
方法來自:http://www.cnblogs.com/flyingcloude/archive/2012/09/09/2677569.html
修改/etc/mysql/my.cnfsudo gedit /etc/mysql/my.cnf在my.cnf檔案中的[client]段和 [mysqld]段加上以下兩行內容:[client]default-character-set=utf8[mysqld]default-character-set=utf8重新啟動MySQL:sudo /etc/init.d/mysql restart查看一下現在mysql的編碼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/share/mysql/charsets/ |+--------------------------+----------------------------+
我發現,修改之後MySQL無法啟動了,試了很多方法都不行。最後發現,將設定檔還原後,MySQl就能正常啟動了!這個很奇怪,真不知道是怎麼回事。我修改資料庫的編碼方式為utf8後,仍然不行。我查詢出的的character_set_server總是latin1字元集。
最後經過N此實驗發現,character_set_server=latin1沒關係。備份之前的資料庫,然後重建資料庫,重建時,選擇字元集為 utf8 - default collation ,然後匯入資料,發現中文不在亂碼了。見所示:
但是對於已經存在的資料庫,通過修改資料庫Alter DataBase...還是不能解決亂碼問題。
而且對於網上說的,在mysql命令列中使用SET命令重新設定字元集,根本沒用,關閉串連後,再次串連,查詢發現,字元集又變成latin1了,很是鬱悶。網上的設定方式如下(我沒成功):
mysql> set character_set_server=utf8;mysql> set character_set_database=utf8;
當前我只找到了這個方法——重建資料庫。如果有更好的方法,多謝賜教!