革命成功 ㊣ WordPress 2.x vs. MySQL 4.x 中文backup格鬥

WordPress 2.x vs. MySQL 4.x 中文backup格鬥終於見分曉

感謝各位路件不平拔刀相助地提供Wordpress原MySQL是latin1導致中文資料backup成為亂碼的解決方案,在下真的一個一個地試過了。這裡是搭配phpMyAdmin完成測試。由於小的使用的server不支援SSH,不能使用像[囈語二三]建議的, 將latin1以utf8如下倒出
mysqldump -u xxx -p database > database.sql –default-character-set=latin1
讓我困惑了一番,但事後證明,用phpMyAdmin匯出是一樣可以的(雖然我知道本來用法就應該是相通的但是之前一直失敗),確實關鍵就在吳老弟說的
1. 進入 phpmyadmin 內一個名為 libraries 的子目錄 .. 編輯 select_lang.lib.php. 找到 $mysql_charset_map 這一段下方 ..

『utf-8′ => 『utf8′,
把它改成

『utf-8′ => 『latin1′,

這樣原本latin1的內容可以被轉讀為utf8 。這之後,建議把架構和內容分開匯出方便檢查。先匯出架構export structure,然後用EmEditor把架構裡的latin1置換成utf8。如果不置換,其實也是可以成功搬走中文內文(好奇心旺盛的我也耐心的試驗過,雖是latin1但中文顯示沒問題),只是以後會再度陷入latin1萬劫不復的深淵,為了一勞永逸,這時就先把架構換成utf8。存檔時也當然要以utf8存囉。
然後再將分開匯出的內容經phpmyadmin以utf8匯入就大公告成了!

實驗log:
★ WordPress wp-db-backup plugin
使用wp-db-backup plugin,內文中文可以毫髮無傷。儘管復原後還是latin1,也可以成功讀出中文。

★ 經測試,如原封不動地以myphpadmin匯入,不管是以utf8 or latin1皆必敗(這也是之前一直卡住的地方,以為latin1 out latin1 in應該行得通),一定要打開內文 把所有的「ENGINE=MyISAM DEFAULT CHARSET=latin1」置換成「 ENGINE=MyISAM DEFAULT CHARSET=utf8」然後以utf8匯入,則沒問題! (如果只有把DEFAULT CHARSET=latin1砍掉有測試過行不通,一定要老實地改成utf8)

所以以上兩種方法都可行,終於,革命成功!

Comments

comments

3 thoughts on “革命成功 ㊣ WordPress 2.x vs. MySQL 4.x 中文backup格鬥”

  1. ps. MySQL 4.x 以後應該是以 utf-8 為內部核心編碼。

    其他 U*IX 上的軟體在最近幾年也都遭遇類似的問題,例如 Netatalk… 在大家的努力下,陣痛期應該很快過去的…

    看看小佩要不要挑戰 MySQL 5.x :p

Leave a Reply

Your email address will not be published.

*