《Mysql學習mysql 編碼機制分析》要點:
本文介紹了Mysql學習mysql 編碼機制分析,希望對您有用。如果有疑問,可以聯系我們。
mysql編碼機制:
character_set_client ,這是用戶告訴mysql查詢是用的什么字符集.
character_set_connection ,mysql接受到用戶查詢后,按照character_set_client將其轉化為character_set_connection設定的字符集.
character_set_results , mysql將存儲的數據轉換成character_set_results中設定的字符集發送給用戶.
discuz并沒有使用set names character
set names 'x'語句與這三個語句等價:
?MYSQL學習
而discuz中:
?MYSQL學習
set character_set_client = binary;使用二進制字符集查詢
此三處的字符設定很大程度上會解決亂碼問題,那么著三個設定具體有什么作用呢?
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指定的編碼解釋執行.MYSQL學習
當執行sql語句的過程中,比如向數據庫中插入字段的時候,字段也有編碼設置,如果字段的編碼設置和character_set_connection指定的不同,則mysql 會把插入的數據轉換成字段設定的編碼.sql語句中的條件判斷和sql插入語句的執行過程類似.MYSQL學習
當sql執行完畢像客戶端返回數據的時候,會把數據從字段指定的編碼轉換為character_set_results指定的編碼,如果character_set_results=null 則不做任何轉換動作,(注意這里設置為null不等于沒有設置,沒有設置的時候mysql會繼承全局設置),工作中比較有用的就是利用mysql進行轉碼、不同編碼的數據庫之間共用數據.MYSQL學習
轉載請注明本頁網址:
http://www.snjht.com/jiaocheng/6482.html