請參考在jjgod的"A MySQL 4.1 Story"這篇文章中,終於看到關於MySQL編碼的詳細說明。
現在終於比較清楚MySQL的運作狀況了。
如果沒設定的話,就會以預設的編碼(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'");
沒有留言:
張貼留言