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

MySQL 元數據統一採用 UTF-8:機制、系統變量與客戶端轉換

     編輯:MySQL 資料庫相關知識

元數據定義與需求

元數據(列名、資料庫名、用戶名、SHOW 結果、INFORMATION_SCHEMA 內容)必須:

  1. 全部在同一字符集內,否則 SELECT 查詢同一列不同行字符集不一致導致失效。
  2. 涵蓋所有語言字符,支援用戶以母語命名物件。

MySQL 採用 UTF-8 滿足上述需求。

影響範圍

  • USER()、CURRENT_USER()、DATABASE()、VERSION() 等函數返回值預設字符集為 UTF-8(character_set_system)。
  • SHOW VARIABLES LIKE 'character_set_system'; 固定返回 utf8。

客戶端接收元數據的字符集

預設由 character_set_results 決定(受 SET NAMES 影響)。若設為 NULL,則不轉換,直接返回 UTF-8 原始編碼。

最佳實踐

  • 若不想用 UTF-8 接收元數據,請用 SET NAMES 強制轉換,或在客戶端自行轉換(效率更高但非所有客戶端支援)。
  • 比較/賦值涉及元數據函數(如 WHERE USER() = latin1_column)時,MySQL 自動處理轉換(latin1_column 內容轉 UTF-8 比較;INSERT ... SELECT USER() 時 USER() 結果轉 latin1 存儲)。
  • MySQL 5.1 起錯誤訊息文件 errmsg.txt 亦全面採用 UTF-8,客戶端字符集自動轉換。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved