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

MySQL 連接字符集與校對:client、connection、results 三層轉換機制

     編輯:MySQL 資料庫相關知識

連接相關字符集系統變量

變量作用
character_set_client客戶端發送 SQL 語句所用字符集
character_set_connection服務器將接收到的語句轉換為此字符集
collation_connection字符串字面值比較時的校對規則(欄位值比較以欄位校對為準)
character_set_results服務器向客戶端返回結果集/錯誤訊息前轉換的目標字符集

SET NAMES 與 SET CHARACTER SET

SET NAMES 'charset' 等價於:

SET character_set_client = charset;
SET character_set_results = charset;
SET character_set_connection = charset;  -- 同時隱式設定 collation_connection 為 charset 預設校對

SET CHARACTER SET charset 等價於:

SET character_set_client = charset;
SET character_set_results = charset;
SET collation_connection = @@collation_database;  -- 使用當前數據庫預設校對

客戶端連線初始化

客戶端連線時發送希望使用的字符集名,服務器內部執行 SET NAMES 完成三變量設定。mysql 客戶端可透過 --default-character-set 選項或選項文件永久設定。

實例:字符集轉換與避免轉換

-- 表欄位為 latin2,連線設定為 latin1
SELECT column1 FROM t;  -- 服務器將 latin2 轉換為 latin1 返回,可能丟失字符

-- 禁止任何轉換,直接返回原始字符集
SET character_set_results = NULL;
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved