2008年6月3日 星期二

MySql 4.1 編碼問題

請參考在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'");

【下列文章您可能也有興趣】

沒有留言: