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

Google 自訂搜尋

Goole 廣告

隨機相片
IMG_00029.jpg

授權條款

使用者登入
使用者名稱:

密碼:


忘了密碼?

現在就註冊!

DB研討會 : [分享]mysql與phpMyAdmin顯示或儲存utf-8問題集

發表者 討論內容
冷日
(冷日)
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的喔。
前一個主題 | 下一個主題 | | | |

討論串




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