MySql 4.1 編碼問題

Home Home
引用 | 編輯 笑笑
2008-06-01 11:01
樓主
推文 x0
試了好幾天的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.tw/plog/post/3/847

獻花 x0