試了好幾天的MySQL編碼問題終於搞定。
在利用Google大神搜尋相關資料後,在
jjgod的"
A MySQL 4.1 Story"這篇文章中,終於看到關於MySQL編碼的詳細說明。
現在終於比較清楚MySQL的運作狀況了。
我的結論:在MySQL 4.1中,不管是
資料庫、
表、
欄位甚至
client 和
result的
連結狀況都必需要
設定編碼。
如果沒設定的話,就會以
預設的編碼(Latin1)來傳遞所有的結果。
因此假設資料庫的編碼已經設定為utf8了,但是在client和result的編碼沒有設定,存入資料庫和資料庫中取出的資料也會出現錯誤(因為經過兩次latin1的編碼,會把Big5或是utf8的中文字破壞掉。)
因此如果打算以utf8來做為所有的資料呈現和儲存的話,可以在進行任何sel query之前加入:
SET character_set_client='utf8' //設定客戶端編碼
SET character_set_connection='utf8' 設定連結時所用編碼
SET character_set_results='utf8' //設定傳回資料時所用編碼
這樣的設定方式就等於:
SET NAMES 'utf8' 因此只要在寫query之前加上 mysql_query("SET NAMES 'utf8'"); 在進行資料的儲存和讀取動作就會正常了,如此一來在phpMyAdmin中也可以看到正常的中文顯示囉 ^_^ 轉貼自 http://stu.dhjh.tp.edu....ost/3/847