由於當初匯入資料到虛擬主機的資料庫裡時,沒有特別注意編碼問題,結果造成無法正常使用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好了。稍晚再信問主機商能否變更資料庫編碼。
##
您可能也會有興趣的類似文章
- phpMyAdmin的替代品:SQL Buddy (6則留言, 2008/12/06)
- WP Widget Cache造成WordPress有問題 (2則留言, 2009/10/26)
- 通用型的資料庫前端項:DBeaver (0則留言, 2011/08/22)
- 如何將Markdown文件轉換成HTML? (1則留言, 2011/03/06)
- 使用FireFox插件存取SQLite資料庫 (0則留言, 2008/01/23)
- DBDesigner 4: Open source的資料庫建模工具 (2則留言, 2005/02/02)
- 氣象局衛星雲圖修正 (3則留言, 2006/07/23)
- 快速切換常用資料夾的工具:Dirkeys (5則留言, 2006/06/11)
- 安裝PmWiki以逐步建立自己的網路知識庫 (6則留言, 2008/12/10)
- 又一個Java寫的資料庫前端工具:Execute Query 3.0 (2則留言, 2006/09/21)
- 在TS-109安裝TiddlyWiki與Joomla! (0則留言, 2007/11/29)
- 資料庫工具: Aqua Data Studio 3.7 (1則留言, 2005/01/04)
- 資料庫工具Aqua Data Studio躍升至6.0版 (0則留言, 2006/12/08)
- Open source的資料庫建模工具:Db Designer Fork (0則留言, 2007/05/16)
- Xuite自由欄位經常造成JavaScript異常!? (12則留言, 2007/04/25)















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外掛。