由於當初匯入資料到虛擬主機的資料庫裡時,沒有特別注意編碼問題,結果造成無法正常使用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)
- Joomla! 1.0.12網站建置 (多圖) (1則留言, 2008/06/22)
- Step by Step安裝WordPress 3.0與啟用 Multi-Site多站點功能 (14則留言, 2010/07/10)
- Oracle驚魂夜 (0則留言, 2008/08/02)
- 使用FireFox插件存取SQLite資料庫 (0則留言, 2008/01/23)
- 如何將ccTiddly轉換成獨立運作的TiddlyWiki (2則留言, 2007/12/02)
- [QNAP NAS] 把NAS當私人圖床的步驟:如何在網誌裡使用NAS裡的圖片 (0則留言, 2012/02/04)
- WordPress 3.0與PHP 5的時區問題 (1則留言, 2010/06/24)
- 修改WordPress 2.8最新迴響的顯示格式 (0則留言, 2009/06/17)
- 運行在TS-109上的ccTiddly設定調整 (2則留言, 2007/12/01)
- [轉貼] 甲骨文欲收購開原碼MySQL (0則留言, 2006/02/16)
- 免費、開源又跨平台的檔案同步軟體:DirSync Pro (0則留言, 2008/10/04)
- 啟用&關閉中華電信ZyXEL P874的無線網路連線功能的步驟[修訂] (32則留言, 2011/06/01)
- Google Chrome自我救濟小變身:改佈景樣式、加滑鼠手勢 (0則留言, 2008/09/07)
- [轉貼] 甲骨文再買下開放原始碼資料庫業者Sleepycat (0則留言, 2006/02/16)















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