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

MySQL 字符集與校對規則完整指南:選型、配置與 Unicode 深度解析

     編輯:MySQL 資料庫相關知識

字符集概述

字符集定義了符號集合與編碼規則。無論 Oracle 或 MySQL,資料庫建立初期若未正確選擇字符集,後期更換代價高且風險大。建議在專案啟動階段依需求選定合適字符集,避免後續調整。

MySQL 字符集架構特色

MySQL 支援多字符集共存:同一伺服器、資料庫、甚至同一張表的不同欄位可指定不同字符集,靈活度遠超 Oracle 等僅允許單一資料庫單一字符集的系統。MySQL 將「字符集」與「校對規則」分離:字符集決定儲存方式,校對規則決定比較排序規則,呈一對多關係(30+ 字符集對應 70+ 校對規則)。可用 SHOW CHARACTER SET、SHOW COLLATION LIKE 'utf8%' 查看支援清單。

Unicode 發展脈絡

  • ASCII:僅 256 碼位,僅覆蓋英文。
  • 各國標準:GB2312、Big5 等各自為政,交換困難。
  • Unicode (UCS):國際組織制定,涵蓋全球文字。UCS-2 用 2 位元組(65,535 碼位),基本覆蓋歐美及大多數亞洲字符;UCS-4 用 4 位元組,理論無上限。

字符集選型實戰建議

在滿足業務前提下,優先選擇較小字符集:節省儲存空間、降低網路傳輸量、間接提升效能。常見中文環境選型:

  • gb2312:字庫較小,部份生僻字(如「洺」)無法儲存。
  • gbk:gb2312 超集,覆蓋更全,推薦作為預設選擇。
  • utf8 / utf8mb4:國際化專案首選,支援 Emoji 等補充平面字符。
  • latin1:單位元組,若誤用於中文易產生亂碼。

四層級字符集配置機制

層級生效範圍配置方式
伺服器級全域預設my.cnf 設 default-character-set、啟動參數 --default-character-set、編譯參數 --with-charset
資料庫級該庫新建表預設CREATE DATABASE ... CHARACTER SET utf8 COLLATE utf8_general_ci
表級該表新建欄位預設CREATE TABLE ... CHARACTER SET utf8
欄位級該欄位實際編碼col_name VARCHAR(100) CHARACTER SET utf8

若僅指定字符集未指定校對規則,將使用該字符集的預設校對規則。可用 SHOW VARIABLES LIKE 'character_set_server' 查看當前伺服器設定。

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