茫茫網海中的冷日 - 對這文章發表回應
茫茫網海中的冷日
         
茫茫網海中的冷日
發生過的事,不可能遺忘,只是想不起來而已!
 恭喜您是本站第 1735166 位訪客!  登入  | 註冊
主選單

Google 自訂搜尋

Goole 廣告

隨機相片
PIMG_00219.jpg

授權條款

使用者登入
使用者名稱:

密碼:


忘了密碼?

現在就註冊!

對這文章發表回應

發表限制: 非會員 可以發表

發表者: 冷日 發表時間: 2008/3/19 6:38:40
鑑於本次冷日要再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的喔。
內容圖示
url email imgsrc image code quote
樣本
bold italic underline linethrough   












 [詳情...]
validation picture

注意事項:
預覽不需輸入認證碼,僅真正發送文章時才會檢查驗證碼。
認證碼有效期10分鐘,若輸入資料超過10分鐘,請您備份內容後,重新整理本頁並貼回您的內容,再輸入驗證碼送出。

選項

Powered by XOOPS 2.0 © 2001-2008 The XOOPS Project|