首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL 編碼機制深度解析與 Discuz 實戰配置

     編輯:MySQL 資料庫相關知識

三大字元集變數

  • character_set_client:客戶端告知 MySQL 查詢使用的字元集。
  • character_set_connection:MySQL 依 character_set_client 將查詢轉為此字元集執行。
  • character_set_results:MySQL 將儲存資料轉為此字元集回傳給客戶端。

Discuz 的特殊配置

SET NAMES 'x' 等價於同時設定上述三個變數為 x。但 Discuz 採用:

@mysql_query("SET character_set_connection=$dbcharset, character_set_results=$dbcharset, character_set_client=binary", $this->link);

各變數作用詳解

character_set_client = binary

指定 SQL 語句編碼為二進位,MySQL 將 SQL 依 character_set_connection 解碼執行。

character_set_connection

執行 SQL 時的編碼。若欄位編碼與此不同,MySQL 會自動轉換插入資料;條件判斷同理。

character_set_results

回傳資料時,從欄位編碼轉為此編碼。設為 NULL 則不轉換(注意:NULL ≠ 未設定,未設定時繼承全域設定)。

實務應用

善用此三變數可解決亂碼問題,亦可實現不同編碼資料庫間的資料共用與轉碼。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved