完整紀錄 wordpress 資料庫編碼 從 latin1 到 utf8 過程

 

從XOOPS到DRUPAL到WORDPRESS

早已犯過多少次關於資料庫編碼的錯誤

前天晚上看了wordpress的資料庫

當場噴出一口鮮血

哇咧 我是大豬頭

 

先把環境描述一下

DREAMHOST虛擬主機

wordpress是用dreamhost內建的一鍵安裝 2.3版

把中文檔上傳變中文版

PHP & MYSQL 皆為dreamhost內附最新的版本

 

首先把所有文章在WP管理介面匯出一份XML檔 預防萬一

接下來要把資料庫DUMP出來

使用SSH連線到虛擬主機

接下來是關鍵

參考大部分的文章我下了這樣的命令

mysqldump -u XXX -p --default-character-set=latin1 XXX > XXX.sql

出現錯誤 殘念

我改下

mysqldump -u XXX -p --default-character-set=latin1 --host=X.X.X.X   XXX > XXX.sql

依然錯誤

繼續改下

mysqldump -u XXX -p -default-character-set=latin1 --host=X.X.X.X   XXX > XXX.sql

--改成- 居然成功了 詭異

很高興的把檔案下載回來

雪特 只有結構沒有資料

 

這時開始思考三條路

1.安裝一個自己的myphpadmin 改設定來備份latin1的資料庫

2.安裝WP的備份外掛插件 聽說可以

3.整個站摧毀重來 把XML倒回來即可

大家都知道ZMAN是個超級大懶人

這三條路應該都不會採行

 

經過跟酷學園團隊幾位大師請教和努力吵谷哥大神(GOOGLE)

今天早上我下了這樣的命令

mysqldump -u XXX -p --host=X.X.X.X   XXX > XXX.sql -default-character-set=latin1

錯誤 快抓狂了

決定再試一次就放棄

mysqldump -u XXX -p --host=X.X.X.X   XXX > XXX.sql --default-character-set=latin1

OH YA! 成功了 居然把-改成--又正常了 詭異

把檔案下載回來 資料結構都有 而且沒亂碼

 

打開你愛用的好一點的編輯器(別用WINDOWS附的任何編輯器)

使用 搜尋 替換 逐一詢問

把 latin1 全都置換成 utf8

另存新檔成 UNIX UTF8 的格式

 

這時連線到DREAMHOST 新建一個資料庫

先把utf8_general_ci指定好

然後把另存的新檔倒進去這個新資料庫

因為懶和怕下命令又出現靈異現象

所以我是直接用myphpadmin倒

 

接下來編輯wp-config.php

把資料庫設定指向新的資料庫

同時指定編碼

define('DB_NAME', 'XXXXX');    
define('DB_USER', 'XXXXX');     
define('DB_PASSWORD', 'XXXXXX'); 
define('DB_HOST', 'XXXXXX');     
define('DB_CHARSET', 'utf8');
define('DB_COLLATE', 'utf8_general_ci');

(當然你也可以用’utf8_unicord_ci’ 我是喜歡快一點)

 

OK 這就是你現在看到的結果

一切正常