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

MySQL 排序規則 utf8_unicode_ci 與 utf8_general_ci 差異總結:準確度 vs 效能選型指南

     編輯:MySQL 資料庫相關知識

建立資料庫/資料表時常見 utf8_general_ci 與 utf8_unicode_ci 兩種 Collation,官方文件指出核心差異在於「擴展字元比較」支援度與速度權衡。

核心差異對照

項目utf8_general_ciutf8_unicode_ci
Unicode 標準支援舊版實作,不支援擴展部分支援 UCA (Unicode Collation Algorithm)
德語 ß 比較ß = sß = ss (符合語言規範)
法語/德語排序可用但細節不精確準確
速度快 (簡單逐碼位比較)略慢 (多級權重比較)
中英環境差異無實質差別

選型建議

  • 系統涉及德語、法語、俄語等多語言排序 → utf8_unicode_ci。
  • 純中英環境、追求寫入/查詢速度 → utf8_general_ci 足夠。
  • MySQL 8.0 預設已升級為 utf8mb4_0900_ai_ci(基於 UCA 9.0),更準確且支援表情符號,新專案建議直接使用。

舊資料升級為 UTF-8 步驟

# 1. 以原字符集導出
mysqldump --default-character-set=latin1 -uroot -p db_name --tables tbl > old.sql

# 2. 轉碼 (Linux/iconv)
iconv -f gb2312 -t utf-8 old.sql > new.sql
# 或自動偵測: iconv -t utf-8 old.sql > new.sql

# 3. 修改 new.sql 開頭加入 SET NAMES utf8;
# 4. 匯入
mysql -uroot -p db_name < new.sql

常用 UTF-8 客戶端工具

  • Navicat (付費、功能全)
  • phpMyAdmin (開源、Web 介面)
  • MySQL Workbench (官方、跨平台)
  • Linux Terminal + SET NAMES utf8;
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved