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

MySQL 字元集深度解析:latin1/utf8/gbk 儲存空間與字元容量實測對照表

     編輯:MySQL 綜合教學

測試環境

MySQL 5.1.5-alpha,建表測試 VARCHAR(200) 欄位實際可存字元數。

三大字元集對照表

字元集位元組/字元1 漢字佔用字元數VARCHAR(200) 可存漢字數VARCHAR(200) 可存字母數適用場景
latin11 byte2 字元 (雙位元組)100200純西歐語系、舊系統相容
utf8 (MySQL 俗稱 utf8mb3)3 bytes1 字元200200通用多語言、Emoji 不支援
utf8mb4 (5.5.3+ 推薦)1-4 bytes1 字元200200完整 Unicode、支援 Emoji/生僻字
gbk2 bytes1 字元200200簡繁中文環境、舊專案相容

關鍵觀念釐清

  • VARCHAR(N) 的 N 代表**字元數**而非位元組數(MySQL 4.1+)。
  • utf8 實際為 utf8mb3,最大 3 bytes/字,**無法存 Emoji (4 bytes)**,會報 Incorrect string value。
  • 新專案一律用 utf8mb4,COLLATE utf8mb4_unicode_ci (準確排序) 或 utf8mb4_general_ci (效能略佳)。
  • latin1 常被用作「二進位桶」儲存任意位元組流(不做字元檢查),但不建議新專案使用。

字元集層級設定優先序

Server (my.cnf) 
  → Database (CREATE DATABASE ... DEFAULT CHARSET=)
    → Table (CREATE TABLE ... DEFAULT CHARSET=)
      → Column (定義時 CHARSET=)
        → Connection (SET NAMES / JDBC URL characterEncoding)

越內層優先級越高,建議**統一全鏈路 utf8mb4**,避免隱性轉碼。

MySQL 字元集儲存空間對照

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