這幾天因為備份 WordPress 資料庫的問題,搞得很頭大。
明明就可以匯出 .sql 資料檔,也可以用 EmEditor 之類的文字編輯軟體正確瀏覽,但是倒回資料庫後,偏偏中文字的部分全變成了問號,就算是直接複製整個 .sql 檔的內容,直接貼回 phpMyAdmin 去,一樣是不正確的結果。
這顯然是編碼出了問題,但是過程中我確定所有檔案都是 UTF-8 編碼,連整個部落格系統也都是呀,怎麼會這樣呢?上網找了半天,終於解決問題了,其實說穿了問題的關鍵很簡單,但之前就是沒想到。剛剛在討論區上看到有人有類似的問題,於是順便紀錄一下我的解決方法,希望給有類似麻煩的人一點參考。
其實,初玩 MySQL 資料庫的人,設定上應該滿容易忽略掉一個地方,就是 my.ini 裡面的 default-character-set 與 default-character-set 這兩個設定值,它們的預設值都是 latin1。雖然說這個設定與用到資料庫的軟體(如 WordPress)的設定並不一定要一樣,在大多數情況下也不一定會出問題,但是遇到備份資料,或是某些特殊字元,可能就會有問題了。因此,為了保險起見,還是建議大家,可以的話還是盡快修正這個問題吧!
不多說,以下是我的解決方法,當然是要搭配 phpMyAdmin 一起服用的喔。
以前我直接在 phpMyAdmin 中觀看資料表的內容,發現中文字的部分全部都是亂碼,還想說是 phpMyAdmin 的問題。不過經過這次修正,這個問題也一併解決掉了,真是可喜可賀!
操作細節部分就不贅述,如果有問題再來發問就好。今天課就上到這裡,下課啦~
做得不是好好.
評論由 simmingandmary 發表 @ 二月 4 日, 2006 4:10 下午
我也想解決這個問題, 我也是用wordpress的, 想把latin1 轉為 utf8
請問如何用 utf8 字串取代掉所有的 latin1 字串??
評論由 sbox 發表 @ 八月 23 日, 2006 11:41 上午
不好意思,這邊我沒說清楚。
我指的是,搜尋整個文件中的 CHARSET=latin1 這個字串,並以 CHARSET=utf8 取代之,然後記得存檔。
如果文件中還有其他設定為 latin1 的部分,請記得要全部都改成 utf8,這樣重新匯入的時候才會以正確的編碼形式來建立資料庫的內容。
評論由 C.H.Weng 發表 @ 八月 23 日, 2006 10:05 下午
謝謝你的回覆,我已解決到問題了
分享一下我的做法︰
1. 我沒有改 my.ini 的 charset
2. 但在 /wp-includes/wp-db.php 找 $this->select($dbname);
然後在前面加入 $this->query(”SET NAMES ‘utf8′”); 便可以了!!
十分開心了,在phpMyAdmin可以看到中文了
評論由 sbox 發表 @ 八月 26 日, 2006 1:07 下午
這也是方法之一,不過缺點就是必須動到 WordPress 核心程式。每次升級的時候,都要記得去修改一下程式碼才行。
評論由 C.H.Weng 發表 @ 八月 27 日, 2006 2:17 下午
您好,我也是最近才將blog由舊server轉到新server上。但是一切轉移完之後,原本的中文卻都顯示亂碼。
我照文中的方法試過,把備份的 sql 中所有的CHARSET=latin1 這個字串以CHARSET=utf8 取代之。但還是照常是亂碼。
可是我從 myphpadmin 上看到table 的資料 Collation都顯示是utf8_general_ci,這樣的話問題可能會是因為哪個設定出問題呢?
對於技術上的東西我真的不太熟,所以看了你的教學文章感覺獲益良多。 不好意思,第一次留言問題有點多。
謝謝!!
評論由 katy 發表 @ 八月 27 日, 2006 10:50 下午
請試試看這邊提到的方法吧:安裝WordPress亂碼問題
評論由 C.H.Weng 發表 @ 八月 30 日, 2006 12:29 上午
我是直接另外裝舊版的 phpMyAdmin XD
評論由 風痕影 發表 @ 一月 7 日, 2007 12:28 下午
謝謝分享,終於可以正常顯示中文了!感謝!新年快樂~
評論由 sonic 發表 @ 一月 2 日, 2011 2:26 上午