|
|
茫茫網海中的冷日
發生過的事,不可能遺忘,只是想不起來而已! |
|
恭喜您是本站第 1735188
位訪客!
登入 | 註冊
|
|
|
|
發表者 |
討論內容 |
冷日 (冷日) |
發表時間:2008/3/19 6:38 |
- Webmaster

- 註冊日: 2008/2/19
- 來自:
- 發表數: 15773
|
- [教學]phpBB+BugFree+XAMPP的UTF-8經驗談
- 鑑於本次冷日要再Windows上面透過XAMPP寫一個系統,
其中使用Apache/2.2.2 (Win32) PHP/5.1.4 與 MySQL - 5.0.21 作為平台, 然後冷日採用 BugFree1.0 + phpBB 2.0.20 還有 phpMyAdmin - 2.8.1。
此時碰上了MySQL常見的UTF-8問題, 簡單來說,就是 MySQL 預設內部是用 latin1 處理資料, 所以外表看似 UTF-8 的網站實際資料卻並非純正 UTF-8。 用 mysqldump 看就會發現全都是亂碼, 直接在 mysql 裡 SELECT 出來的也全是亂碼, phpMyAdmin也無法正常顯示輸入的資料!
冷日的處理方法如下: 1.備份資料庫:
mysqldump -u root -p --default-character-set=latin1 --add-drop-table bugfree > bugfree_latin1.sql
mysqldump -u root -p --default-character-set=latin1 --add-drop-table phpBB2 > phpBB2_latin1.sql
2.轉換編碼: 使用ConvertZ把 bugfree_latin1.sql、phpBB2_latin1.sql 分別用utf-8編碼另存為bugfree_UTF8.sql、phpBB2_UTF8.sql 然後把bugfree_UTF8.sql、phpBB2_UTF8.sql這兩個檔案裡面所有的「latin1」這字眼取代為「utf8」
3.設定MySQL: 修改my.cnf,在client區段加入default-character-set=utf8,如下
[client]
default-character-set=utf8
在mysqld區段加入utf8設定,如下
[mysqld]
character-set-server = utf8
collation-server = utf8_unicode_ci
default-character-set = utf8
default-collation = utf8_general_ci
4.倒回資料:
mysql -u root -p bugfree < bugfree_UTF8.sql
mysql -u root -p phpBB2 < phpBB2_UTF8.sql
5.重新啟動MySQL
6.修改資料庫連結: 在每個(就是BugFree與phpBB)資料庫連結Function檔案裡,只要db connect上以後,馬上加入這一行:
mysql_query("SET NAMES 'UTF8'");
這樣就大功告成啦!
順便提一下, UTF-8 編碼的東東,在透過 get 傳遞的時候,常常會有怪怪的狀況, 比方說使用者要設定「永遠將URL傳送成UTF-8」或是明明已經設定好了,卻還是會有和其他英文字碼混在一起變亂碼的問題, 這時候請使用php內建的函式「rawurlencode」! 使用方法如下:
string rawurlencode (string str)
如此你的字串不管是啥編碼,都會被轉成RFC1738的URL編碼,應該就不會錯了啦! 至少冷日測試是OK的喔。
|
|
討論串
|