其實比較早期的版本 WordPress 在建立新 blog 時已經直接使用 UTF8 格式儲存,所以沒有編碼問題,同一篇文章有正體殘體中文字,加上日本韓文等都沒事;而 WordPress 亦支援部分香港常用字,如「邨」、「埗」等等都沒有問題。
不過其實一般常用的 MySQL 所使用的 UTF-8 只有 Level-0 最低級別的支援,所以如果輸入了不支援的香港字如「????」的話,由於 MySQL 不支援的關係,儲存時會連同「????」字以後的文字都會消失。
企企已經經歷這種情況數次,寫完一大篇 blog save 後就消失了大部份,真的欲哭無淚,最近又幾乎發生這種情況,所以決心找解決之道。
MySQL 都清楚它們對 UTF8 的支援有限,不過一直到 MySQL 5.5 才真正支援完整的 UTF8,名為 UTF8MB4。
UTF8MB4 除了支援完整香港字外,還支援 Emoji 等字元。
而 UTF8 和 UTF8MB4 最大不同之處是 UTF8 只用 3 byte 儲存一個字,UTF8MB4 則用 4 byte 儲存,所以一些 Index 欄位就會變成上限只有 179 字元,這是 UTF8MB4 其中一個軟肋,但除非你是超大型的 blog 否則 WordPress 應該難以用盡這個上限。
另一個使用 UTF8MB4 時要注意的是,它只支援 InnoDB,不過較新建的 blog 預設已經是 InnoDB 了,如果不是的話就需要轉換。
首先:請 backup 你的 database 以防出現狀況時可以救回。
如果不太清楚如何 backup 的話,建議安裝 phpMyAdmin,這個 web gui 介面亦會方便之後的步驟。
安裝 phpMyAdmin
假設各位可能沒有 SSH 的權限,大家需要下載 phpMyAdmin 到自己的電腦並解壓。
將 config.sample.inc.php 改名為 config.inc.php,用記事簿編輯並更改其中一句
$cfg['blowfish_secret'] = 'a8b7c6d';
將 a8b7c6d 改為其他任何字,總之只要非這字串就可以了。這個是 session string 防止其他人 hack 你的 database,因為用預設的話,有機會被 hacker 扮已登入並更改你的資料。
跟著開一個新 folder 如 phpMyAdmin-skq13d34 等後面加一串亂碼,防止其他人估你的 phpMyAdmin 位,加多一層保障。
之後 ftp 上載 phpMyAdmin 到你 blog 的 root folder.
最後就要改變 config.inc.php 的權限,否則人人也可以看到你的 session secret 就像人人都可以看到你的密碼一樣,無秘密可言。
安裝完畢,現在可以登入 phpMyAdmin backup 你的 database 了。
phpMyAdmin 的登入網址是 http://YOUR_DOMAIN/phpMyAdmin-YOUR_NUMBER
Backup Database
Backup database 其實很簡單,登入 phpMyAdmin 後就會看到 WordPress 的 db,之後在右邊選擇匯出 (export),再選擇「自訂」,在輸出選擇壓縮為 gzip 壓縮,按確定後就可以儲存你的 backup.
最後按「執行」就可以儲存 backup 了。