mysql中的編碼各個變數的含義

鴨脖發表於2012-05-06
character_set_client ,這是使用者告訴MySQL查詢是用的什麼字符集。
character_set_connection ,MySQL接受到使用者查詢後,按照character_set_client將其轉化為character_set_connection設定的字符集。

character_set_results , MySQL將儲存的資料轉換成character_set_results中設定的字符集傳送給使用者。


character_set_client指定的是Sql語句的編碼,如果設定為 binary,mysql就當二進位制來處理,character_set_connection指定了mysql 用來執行sql語句的時候使用的編碼,也就是說,程式傳送給MySQL 的SQL語句,會首先被MySQL從character_set_client指定的編碼轉換到character_set_connection指定的編碼,如果character_set_clien指定的是binary,則MySQL就會把SQL語句按照character_set_connection指定的編碼解釋執行.
當執行SQL語句的過程中,比如向資料庫中插入欄位的時候,欄位也有編碼設定,如果欄位的編碼設定和character_set_connection指定的不同,則MySQL 會把插入的資料轉換成欄位設定的編碼。SQL語句中的條件判斷和SQL插入語句的執行過程類似.
當SQL執行完畢像客戶端返回資料的時候,會把資料從欄位指定的編碼轉換為character_set_results指定的編碼,如果character_set_results=NULL 則不做任何轉換動作,(注意這裡設定為NULL不等於沒有設定,沒有設定的時候MySQL會繼承全域性設定),


相關文章