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

MySQL 字符集完整配置指南:伺服器/資料庫/資料表/欄位/連線層級查詢與設定

     編輯:MySQL 資料庫相關知識

一、查看當前字符集設定

SHOW VARIABLES LIKE 'character_set_%';
SHOW VARIABLES LIKE 'collation_%';

二、查看支援的字符集與校對規則

SHOW CHARSET;
SHOW COLLATION;

三、配置檔永久生效 (my.cnf / my.ini)

[client]
default-character-set = utf8mb4

[mysql]
default-character-set = utf8mb4

[mysqld]
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
# init_connect='SET NAMES utf8mb4'  # 非超級用戶自動執行

修改後必須重啟 MySQL 服務。

四、執行期動態設定 (僅當前會話)

SET NAMES utf8mb4;  -- 等同於下面三句
SET character_set_client = utf8mb4;
SET character_set_connection = utf8mb4;
SET character_set_results = utf8mb4;

-- 進階個別設定
SET character_set_database = utf8mb4;
SET character_set_server = utf8mb4;  -- 需 SUPER 權限
SET collation_connection = utf8mb4_unicode_ci;

五、資料庫/資料表/欄位層級設定

-- 建立資料庫指定
CREATE DATABASE mydb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

-- 修改資料庫預設 (不影響既有表)
ALTER DATABASE mydb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

-- 修改資料表預設 (不轉換既有欄位)
ALTER TABLE tbl DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

-- 轉換資料表含所有字串欄位 (資料重寫,大表慎用)
ALTER TABLE tbl CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

-- 修改單一欄位
ALTER TABLE tbl CHANGE col col VARCHAR(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

六、查看實際編碼

SHOW CREATE DATABASE db_name;
SHOW CREATE TABLE tbl_name;
SHOW FULL COLUMNS FROM tbl_name;

七、MySQL 字符集轉換流程 (連線 → 內部 → 結果)

  1. 客戶端請求:character_set_client → character_set_connection
  2. 內部操作:依優先順序決定內部字符集
    欄位 CHARSET → 表 DEFAULT CHARSET → 資料庫 DEFAULT CHARSET → character_set_server
  3. 結果輸出:內部字符集 → character_set_results

八、常見坑點提醒

  • my.cnf 的 default-character-set 僅影響 mysql 命令列客戶端,不影響 JDBC/ODBC/PHP 等 libmysqlclient 應用
  • SQL 函數操作 (如 UPPER()) 在內部操作字符集執行,不受連線字符集影響
  • 新專案統一使用 utf8mb4,支援完整 Unicode (含 Emoji)
  • utf8mb4_unicode_ci (UCA 標準排序) vs utf8mb4_general_ci (舊版簡易排序),推薦前者
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved