stevenbb 寫:資料庫=latin1
mysql=utf8
phpbb=big5版本\r
phpbb加入 mysql_query("set names 'latin1'", $this->db_connect_id); 後正常
phpmyadmin 2.5.7 正常,2.6.x 以上亂碼
修正此處, phpmyadmin 2.5.7 應該是不正常
經過這些測試,我認為程式沒有設定 SET NAMES xxx; 時,就會依照 mysql 的設定在跑
phpmyadmin 2.5.7 沒有設定 SET NAMES,2.6.X 後的版本是有的
DearHoney 寫:就這樣,花個幾個小時,我成功轉換了。現在,我用 phpmyadmin 配合 UTF-8 語系,而且 MySQL 是 4.1 版,可以看到討論區在資料庫內的內容了。
不過,回頭我開始用 phpBB 套上 UTF-8 的 Language 時,從資料庫出來的全部變成亂碼了。最後我發現,我要自行修改 phpBB 程式,找個地方先執行一下 SET NAMES UTF8 的 SQL 指令,才能將資料庫內的資料以 UTF-8 的方式存取。
因此,會造成你這樣的問題應該是在於你 mysql 的設定不是 utf8
所以 phpbb 沒有設定 SET NAMES 就會跟著 mysql 的設定
而 2.6.x 後的版本是有設定 SET NAMES 的
另外你提到\r
DearHoney 寫:有在使用 MySQL 4.1 以上,且從資料庫結構開始就是 utf8_bin,phpBB 也是轉換成 utf8 的,不妨用 phpmyadmin 看看,這時候看得到討論區的內容嗎?應該全部都是亂碼,但反反得正的結果,您的 phpBB 表現出來的是正確的編碼。
我做了一個測試
mysql 的 windows 安裝版本預設是 latin1
而我猜竹貓的 2.0.18 utf8版本實際上也只有改變語系檔為 utf8
install 目錄下的 mysql_schema.sql 內容並沒有指定資料表是 utf8
db 目錄下的 mysql4.php 內容也沒有 SET NAMES utf8 字串\r
mysql 安裝使用預設值,然後用竹貓的 2.0.18 版本安裝
使用這種組合的人應該很多吧\r
這樣的組合當使用者在安裝 phpbb 時,透過 phpmyadmin 新增資料庫,即使連線部分設定 utf8
安裝後,資料表上面的確都是顯示 utf8
結果就是,在討論區看到的文字都是正常的,可是在 phpmyadmin 2.6.x 後的版本卻都是亂碼\r
另外一點是 phpmyadmin 2.5.7 的版本雖然是亂碼,但只要點右鍵將編碼改成 utf8 版面雖然跑掉了,不過內容卻不是亂碼了
事實上似乎是將 utf8 的文字以 latin1 的格式存了起來,下面的測試讓我看起來很擔心
我將此資料庫下三種不同參數備份\r
mysqldump -u root -p temp > temp1.sql
資料表最後面是 DEFAULT CHARSET=utf8
文字內容是亂碼的
mysqldump --default-character-set=utf8 -u root -p temp > temp2.sql
資料表最後面是 DEFAULT CHARSET=utf8
文字內容依然是亂碼的
mysqldump --default-character-set=latin1 -u root -p temp > temp3.sql
資料表最後面是 DEFAULT CHARSET=utf8
但是,文字內容是正確的
官方並沒有 utf8 的版本,竹貓要不要確認看看 utf8 版本有沒有問題