character_set_client:客戶端告知 MySQL 查詢使用的字元集。character_set_connection:MySQL 依 character_set_client 將查詢轉為此字元集執行。character_set_results:MySQL 將儲存資料轉為此字元集回傳給客戶端。SET NAMES 'x' 等價於同時設定上述三個變數為 x。但 Discuz 採用:
@mysql_query("SET character_set_connection=$dbcharset, character_set_results=$dbcharset, character_set_client=binary", $this->link);
指定 SQL 語句編碼為二進位,MySQL 將 SQL 依 character_set_connection 解碼執行。
執行 SQL 時的編碼。若欄位編碼與此不同,MySQL 會自動轉換插入資料;條件判斷同理。
回傳資料時,從欄位編碼轉為此編碼。設為 NULL 則不轉換(注意:NULL ≠ 未設定,未設定時繼承全域設定)。
善用此三變數可解決亂碼問題,亦可實現不同編碼資料庫間的資料共用與轉碼。