convert phpbb2 to utf-8

這篇是我把 phpBB 2.0.17 轉成 UTF-8 的過程,內容包括 MySQL 裡面的資料轉換。

執行概況:
安裝好 MySQL 之後把資料庫預設為 UTF-8,接著把 phpBB 轉成 UTF-8。之後發現舊的資料讀取會有問題,需要一起轉換。

  1. 首先,記得一定要備份,東西回不來沒有人可以救你。 :Q
  2. 用 ConvertZ 把 language/chinese_tradtional_taiwan/ 目錄底下的檔案轉成 UTF-8,然後用軟體把檔案裡面的 big5 也換成 utf-8。email/ 底下的內容我沒有轉,聽說轉了以後 Outlook 收到的信會標題會亂掉,可以參考竹貓這篇這篇的解決辦法。
  3. 用命令提示符號開啟 MySQL\bin 的目錄,輸入:

    mysqldump --default-character-set=latin1 -u root -p phpbb2 > phpbb2.sql

    #第一個 phpbb2 是我 phpBB 的 database 名稱,請自己替換。

  4. 用編輯軟體開啟 phpbb2.sql,先看看裡面的內容有沒有正確,然後在檔案最前面加上:

    SET NAMES utf8;

    然後存成 UTF-8 不要加 BOM。如果你的編輯軟體沒辦法存成這種格式,就把他另存新檔,然後用 ConvertZ 再把他轉成 UTF-8 不加 BOM 的格式。

  5. 再回到命令提示符號的視窗,輸入:

    mysql -u root -p phpbb2 < phpbb2.utf8.sql

    把資料放回去。

  6. 打開 MySQL 目錄底下 (或是可能在你 Windows 的目錄底下) 的 my.ini,在 [mysqld] 的地方加上:

    init_connect=‘SET NAMES utf8′
    default-character-set = utf8

    #後面的那個我本來就有加,請看的人自己參考斟酌。

  7. 全部做完以後,打開你的 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:

  1. 竹貓星球在 2.0.21 版之後推出了 UTF-8 版本的中文語系檔,如果一開始就是使用這個語系檔的話您不需要執行步驟二 (因為語系檔已經轉換好了) 和步驟四裡面關於轉碼的部分 (因為轉出來的檔案已經是 UTF-8 的格式了)。
  2. 如果因為各種原因沒辦法使用 mysqldump 的話,請參考這篇開啟你的 phpMyAdmin 轉碼功能。
  3. 這篇文章是以安裝時沒有設定任何預設語系 (也就是 charset=latin1, collation=latin1_swedish_ci 的狀況) 下為前提所寫的,如果 MySQL 已經設定了其他預設語系 (ex.big5),需要更改步驟二及步驟四的指令內容,但是就算改了也不保證可以 100% 轉成功。
  4. Win2k/XP 的記事本存的 UTF-8 有加 BOM,請想辦法弄掉它或是改用其他軟體。正常情況下可以存成不加 BOM 格式的編輯軟體都會特別註明這個選項。

1 Comment »

  1. [...] http://chiouss0817.wordpress.com/2006/04/28/convert-phpbb2-to-utf-8/http://blog.teatime.com.tw/post/1/48 [...]

RSS feed for comments on this post · TrackBack URI

Leave a Comment