[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好了。稍晚再信問主機商能否變更資料庫編碼。
##
您可能也會有興趣的類似文章
- phpMyAdmin的替代品:SQL Buddy (6則留言, 2008/12/06)
- Joomla! 1.0.12網站建置 (多圖) (1則留言, 2008/06/22)
- Step by Step安裝WordPress 3.0與啟用 Multi-Site多站點功能 (20則留言, 2010/07/10)
- [Mattermost 教學#1] 團隊溝通工具Mattermost的Windows安裝指引 (0則留言, 2018/04/07)
- Oracle驚魂夜 (0則留言, 2008/08/02)
- 使用FireFox插件存取SQLite資料庫 (0則留言, 2008/01/23)
- 如何將ccTiddly轉換成獨立運作的TiddlyWiki (2則留言, 2007/12/02)
- [QNAP NAS] 把NAS當私人圖床的步驟:如何在網誌裡使用NAS裡的圖片 (2則留言, 2012/02/04)
- [React-01] 使用IntelliJ IDEA學習React (0則留言, 2018/06/24)
- 使用Gmail擴充來增強郵件處理效率的技巧 (0則留言, 2013/09/19)
- [Ubuntu] 使用youtube-dl下載YouTube.com的影片 (0則留言, 2014/02/01)
- WordPress 3.0與PHP 5的時區問題 (1則留言, 2010/06/24)
- 使用ownCloud打造專用的「類Dropbox」雲端儲存系統 (15則留言, 2013/03/19)
- [Obs#96] Obsidian分頁調整: CSS樣式與外掛,讓分頁操作更簡便 (0則留言, 2022/09/10)
- 用rclone命令行指令簡化雲端儲存服務的各項檔案操作 (0則留言, 2016/03/15)
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外掛。