天天看點

Mysql基礎之字元集與亂碼

Mysql的字元集設定非常靈活

可以設定伺服器預設字元集

資料庫預設字元集

表預設字元集

列字元集

如果某一個級别沒有指定字元集,則繼承上一級.

以表聲明utf8為例:

存儲的資料在表中,最終是utf8;

Mysql基礎之字元集與亂碼

1:告訴伺服器,我給你發送的資料是什麼編碼的? character_set_client

2:告訴轉換器,轉換成什麼編碼? Character_set_connection

3:查詢的結果用什麼編碼? Character_set_results 

如果以上3者都為字元集N, 則可以簡寫為 set names N

推論: 什麼時将會亂碼?

1: client聲明與事實不符

2:results與用戶端頁面不符的時候.

什麼時間将會丢失資料?

Connetion和伺服器的字元集比client小時.

Mysql基礎之字元集與亂碼

校對集: 指字元集的排序規則

一種字元集可以有一個或多個排序規則.

以Utf8為例, 我們預設使的utf8_general_ci 規則,也可以按二進制來排, utf8_bin

Mysql基礎之字元集與亂碼

怎麼樣聲明校對集?

Create table ()... Charset utf8 collate utf8_general_ci;

注意:聲明的校對集必須是字元集合法的校對集.