2009年2月17日

Wordpress db 由 latin1 轉成 utf8

原本我這個 wordpress 的資料庫 (比如名稱為 myblog),DB_COLLATE 為  latin1_swedish_ci ,也不是不能用,只是用 phpmyadmin 會變亂碼,在後台處理會麻煩點。


參考各方資料,步驟如下:



  • 新增一個新的 db,比如為 myblog_utf8,用 phpmyadmin 將其 DB_COLLATE 設成 utf8_general_ciutf8_unicode_ci

  • 將 myblog 的資料匯出


 
mysqldump myblog --default-character-set=latin1 > test.sql


  • 用 vi 編輯 test.sql,執行取代字串


 
:% s/CHARSET=latin1/CHARSET=utf8/g


  • 然後,將 test.sql 的下列這行


 
/*!40101 SET NAMES latin1 */;


  • 取代成


 
/*!40101 SET NAMES utf8 */;


  • 然後,將 test.sql 匯入 myblog_utf8


 
mysql myblog_utf8 --default-character-set=utf8 < test.sql


  • 編輯 wp-config.php  的 DB_NAME, DB_CHARSET 及 DB_COLLATE,讓原來的 db 重新指到 myblog_utf8 即完成。


 
define('DB_NAME', 'myblog_utf8');
define('DB_CHARSET', 'utf8');
define('DB_COLLATE', 'utf8_general_ci');


Orignal From: Wordpress db 由 latin1 轉成 utf8