[WordPress] 資料庫切換成UTF-8的匯出/匯入紀錄

由於當初匯入資料到虛擬主機的資料庫裡時,沒有特別注意編碼問題,結果造成無法正常使用myPhpAdmin檢視的狀況,今天特別重新做了處理並留下這篇紀錄。

原來的設定

  • phpMyAdmin MySQL 文字編碼:cp1252 West European (latin1) ,為固定值無法更改
  • phpMyAdmin MySQL 連線校對:utf8_unicode_ci
  • 資料庫校對:latin1_swedish_ci
  • wp-config.php裡的相關程式碼:
    define('DB_CHARSET', '');
    define('DB_COLLATE', '');
    

狀況:

  • 部落格網頁編碼:UTF-8,顯示正常
  • phpMyAdmin網頁編碼:Big5,系統文字顯示正常,但資料內容為亂碼
  • 將phpMyAdmin網頁編碼變為:UTF-8,則系統文字為亂碼,但資料內容正常

匯出latin1的資料:

使用主機商現有的phpMySQL將資料匯出:

  • 點選原來的latin1資料庫,做資料匯出(Export→壓縮成.zip格式→Go)
  • 解壓縮後,以文書編輯器開啟匯出的SQL文字檔,我使用的編輯器是NotePad++
  • 另存檔案格式為「UTF-8碼(檔首無BOM)」
  • 在開頭約16行處找到 /*!40101 SET NAMES latin1 */;latin1改成utf8,接著再存檔
  • 再次開啟變更編碼格式後的檔案,以確認已正確轉換為UTF-8了

新的設定

由於phpMyAdmin的文字編碼無法修改,因此另行安裝wp-phpMyAdmin外掛,此外掛使用的編碼是我們需要的UTF-8,因此透過它來做資料的匯入。

  • 點選新的資料庫,將資料庫校對更改為utf8_general_ci
    ALTER DATABASE `資料庫名` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci
    
  • 用wp-phpMyAdmin外掛,選取先前的匯出檔外,按〔Import〕
  • 匯入完畢後,點選wp_posts,用【Browse】看一下中文是否正確顯示
  • 修改wp-config.php,把define('DB_NAME', '資料庫名'); 裡的資料庫名改成新的資料庫。並做下列設定:
    define('DB_CHARSET', 'utf8');
    define('DB_COLLATE', 'utf8_unicode_ci');
    

做了上述設定後,雖然主機商的phpMyAdmin仍然無法正常顯示中文,甚至將網頁切換成UTF-8編碼仍然無法正確顯示,但使用wp-phpMyAdmin則都是正確的,因此就改先改用外掛的phpMyAdmin好了。稍晚再信問主機商能否變更資料庫編碼。

##

您可能也會有興趣的類似文章

簡睿

服務於軟體業的資訊老兵。興趣廣泛,學習力佳,樂於分享所知所學。

您可能也會喜歡…

2 個回應

  1. Kenming Wang表示:

    Hello~

    是否是您的連線校對沒有設正確呢? (因為您在 wordpress 內的 config 檔是設為預設的 utf8_unicode_ci)

    ALTER DATABASE `資料庫名` DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci

    anyway, 我並清楚 utf8_general_ci 與 utf8_unicode_ci 的差異。 在我以往的系統均是設定為 general_ci,運作都很正常;但 wordpress 似乎是建議為 unicode_ci,這讓我不得不再去研究一下個中的差異囉。

    • 簡睿表示:

      主機商的連線校對沒辦法改,目前都是用SQLBuddy或WordPress裡安裝的phpMyAdmin外掛。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *