Mysql的字元集設定非常靈活
可以設定伺服器預設字元集
資料庫預設字元集
表預設字元集
列字元集
如果某一個級别沒有指定字元集,則繼承上一級.
以表聲明utf8為例:
存儲的資料在表中,最終是utf8;
1:告訴伺服器,我給你發送的資料是什麼編碼的? character_set_client
2:告訴轉換器,轉換成什麼編碼? Character_set_connection
3:查詢的結果用什麼編碼? Character_set_results
如果以上3者都為字元集N, 則可以簡寫為 set names N
推論: 什麼時将會亂碼?
1: client聲明與事實不符
2:results與用戶端頁面不符的時候.
什麼時間将會丢失資料?
Connetion和伺服器的字元集比client小時.
校對集: 指字元集的排序規則
一種字元集可以有一個或多個排序規則.
以Utf8為例, 我們預設使的utf8_general_ci 規則,也可以按二進制來排, utf8_bin
怎麼樣聲明校對集?
Create table ()... Charset utf8 collate utf8_general_ci;
注意:聲明的校對集必須是字元集合法的校對集.