這篇是我把 phpBB 2.0.17 轉成 UTF-8 的過程,內容包括 MySQL 裡面的資料轉換。
執行概況:
安裝好 MySQL 之後把資料庫預設為 UTF-8,接著把 phpBB 轉成 UTF-8。之後發現舊的資料讀取會有問題,需要一起轉換。
- 首先,記得一定要備份,東西回不來沒有人可以救你。 :Q
- 用 ConvertZ 把 language/chinese_tradtional_taiwan/ 目錄底下的檔案轉成 UTF-8,然後用軟體把檔案裡面的 big5 也換成 utf-8。email/ 底下的內容我沒有轉,聽說轉了以後 Outlook 收到的信會標題會亂掉,可以參考竹貓這篇和這篇的解決辦法。
- 用命令提示符號開啟 MySQL\bin 的目錄,輸入:
mysqldump --default-character-set=latin1 -u root -p phpbb2 > phpbb2.sql#第一個 phpbb2 是我 phpBB 的 database 名稱,請自己替換。
- 用編輯軟體開啟 phpbb2.sql,先看看裡面的內容有沒有正確,然後在檔案最前面加上:
SET NAMES utf8;然後存成 UTF-8 不要加 BOM。如果你的編輯軟體沒辦法存成這種格式,就把他另存新檔,然後用 ConvertZ 再把他轉成 UTF-8 不加 BOM 的格式。
- 再回到命令提示符號的視窗,輸入:
mysql -u root -p phpbb2 < phpbb2.utf8.sql把資料放回去。
- 打開 MySQL 目錄底下 (或是可能在你 Windows 的目錄底下) 的 my.ini,在
[mysqld]的地方加上:
init_connect=‘SET NAMES utf8′
default-character-set = utf8
#後面的那個我本來就有加,請看的人自己參考斟酌。
- 全部做完以後,打開你的 phpBB,看看資料有沒有都正確顯示?
[附註] 如果你的 phpBB 是用 root 或是有同要權限的使用者去連接 mysql 的 (這樣做不好喔!) 話,上面那個
init_connect 的指令會無效,你需要給 phpBB 開一個專門的使用者 (建議是這樣做),或是打開 db/mysql.php (如果你安裝的時候是選 MySQL 4.x 的話就要開啟 mysql4.php),找到 mysql_connect 的地方,在後面加上:
@mysql_query ("set names utf8;", $this->db_connect_id);
這樣才會正常顯示。
[補充] 第三次寫完這篇 (前兩次是在我的其他 blog 上面) 發現 StudyArea 的 Tommy 長輩也在他的 blog 寫下了 StudyArea 的 phpBB 轉成 UTF-8 的心得,比我的過程還詳細很多。如果看不懂我的內容或是覺得我寫得不構詳細,歡迎大家去參考 Tommy 長輩的網頁。 :)
2007-02-22 Update:
- 竹貓星球在 2.0.21 版之後推出了 UTF-8 版本的中文語系檔,如果一開始就是使用這個語系檔的話您不需要執行步驟二 (因為語系檔已經轉換好了) 和步驟四裡面關於轉碼的部分 (因為轉出來的檔案已經是 UTF-8 的格式了)。
- 如果因為各種原因沒辦法使用 mysqldump 的話,請參考這篇開啟你的 phpMyAdmin 轉碼功能。
- 這篇文章是以安裝時沒有設定任何預設語系 (也就是 charset=latin1, collation=latin1_swedish_ci 的狀況) 下為前提所寫的,如果 MySQL 已經設定了其他預設語系 (ex.big5),需要更改步驟二及步驟四的指令內容,但是就算改了也不保證可以 100% 轉成功。
- Win2k/XP 的記事本存的 UTF-8 有加 BOM,請想辦法弄掉它或是改用其他軟體。正常情況下可以存成不加 BOM 格式的編輯軟體都會特別註明這個選項。
William’s Scratch Book » PhpBB big5 -> UTF-8 文章兩篇 said
[...] http://chiouss0817.wordpress.com/2006/04/28/convert-phpbb2-to-utf-8/http://blog.teatime.com.tw/post/1/48 [...]