Filed Under (Note) by a-wei on 05-04-2006

SMF 是個人覺得相當不錯的論壇系統,各方面的功能比起phpbb2來講都要好的多,因此成為個人架設論壇的首選系統。

初安裝此系統時, 個人曾嘗試將資料庫編碼設定成 utf8,但是都安裝失敗,因為原本的 mysql 系統預設編碼是 latin1而非utf8,而且 SMF 的安裝程式以及系統的主程式都需要做些調整。

剛開始安裝的時候,對這些並不是很懂,因此只要系統能夠正常安裝和運作就覺得 ok了,然而並費這麼順遂。

所以,當時發現把資料庫編碼 維持在 latin1,這樣的話不僅可以順利安裝,系統也可以正常運作,只不過我安裝的系統檔案是 chinese-tradictional-utf8,因此頁面的資料是 utf8 格式,而資料庫的編碼是以 latin1 儲存的。

這樣的運作方式有個現象就是:

1.在系統頁面所呈現出來的資料,是正常的中文,但是資料庫內的資料,如果用 phpMyadmin去觀看的話,卻是亂碼,這是因為 phpmyadmin 是以 utf8的方式去讀取資料,而資料庫是 latin1的編碼儲存,因此讀出來的資料會變成亂碼。

2.在某些情況下,原本輸入的中文在經過資料庫的儲存然後再點開來看的時候,會變成亂碼,但是再度進入編輯模式的時候,它又正常顯示成中文,這也就是我為什麼決定要將整個資料庫編碼從 latin1 轉換成 utf8 的主要原因。
且我安裝的系統版本是早期的 1.1. beta3,而不是當下最新的 1.1 RC2. 因為我發覺 1.1.RC2 如果資料庫選擇 latin1 可以正常安裝,但是中文會出現很多問號,只有 1.1. beta3好很多。因此就決定安裝1.1 beta3.

心想既然要全面更新成為 utf8 就乾脆連系統一起更新。

接下來就是整個轉換的過程說明:

1. 先升級系統成為 1.1. RC2:

a. 下載 1.1. RC2 的更新檔案。

b. 下載 1.1. RC2 的中文檔。

c. 依序解壓縮更新檔跟中文檔。

d. 執行 http:/xxxx/smf/upgrade.php 進行升級作業。
2. 轉換資料庫:

資料庫轉換的方法參閱上一篇。

3. 更新系統程式:

將以下這行加入幾個主要的程式內。

@mysql_query(”SET NAMES UTF8″);

a. index.php (// Load the settings from,於上一行加入)

b. SSI.php (// Load installed ‘Mods’ settings.)

c. 更新 Sources 目錄內的檔案 (參考綠光森林中的這篇主題:SMF 1.1rc中文亂碼修改(新年快樂!),下載 Source.zip 更新之。)

這樣下來,就完成了 utf8 的系統升級工作了。



Post a comment

Name: 
Email: 
URL: 
Comments: