首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

MySQL 建立 UTF-8/GBK 資料庫指令(重構版):utf8mb4 最佳實踐與字元集完整設定

     編輯:MySQL 綜合教學

MySQL 資料庫字元集建立與設定完整指南(現代最佳實踐版)

一、建立資料庫指令對比

字元集指令適用場景
utf8mb4 (推薦)
CREATE DATABASE `db` 
DEFAULT CHARACTER SET utf8mb4 
COLLATE utf8mb4_unicode_ci;
新專案、支援 Emoji、完整 Unicode
utf8 (舊版)
CREATE DATABASE `db` 
DEFAULT CHARACTER SET utf8 
COLLATE utf8_general_ci;
舊系統相容、僅 BMP 字元
GBK
CREATE DATABASE `db` 
DEFAULT CHARACTER SET gbk 
COLLATE gbk_chinese_ci;
繁簡中文舊系統、儲存空間敏感

二、字元集與排序規則選擇指南

  • utf8mb4_unicode_ci:Unicode 標準排序、精度高、支援多語言、略慢
  • utf8mb4_general_ci:簡化排序、速度快、部分語言排序不準
  • utf8mb4_0900_ai_ci:MySQL 8.0+ 預設、Unicode 9.0、無重音敏感、效能最佳

三、驗證與查看

SHOW CREATE DATABASE db;
SHOW VARIABLES LIKE 'character_set_database';
SHOW VARIABLES LIKE 'collation_database';

四、修改既有資料庫

ALTER DATABASE `db` 
CHARACTER SET utf8mb4 
COLLATE utf8mb4_unicode_ci;

⚠️ 僅影響**後續建立的表**,既有表需逐一轉換:

ALTER TABLE `tbl` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

五、全鏈路字元集設定(防亂碼鐵律)

[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'
skip-character-set-client-handshake  # 強制忽略客戶端設定

六、應用層連線字串

  • JDBC:jdbc:mysql://host:3306/db?characterEncoding=utf8mb4&useSSL=false
  • Python:charset='utf8mb4'
  • Go:charset=utf8mb4 in DSN
  • PHP PDO:charset=utf8mb4 in DSN

七、常見坑點

  1. utf8 ≠ 真正 UTF-8,**必須用 utf8mb4** 存 Emoji
  2. 表/欄位字元集優先級:欄位 > 表 > 資料庫 > 伺服器
  3. COLLATE 不一致導致 JOIN/WHERE 走不了索引
  4. 匯入匯出需指定 --default-character-set=utf8mb4
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved