建立資料庫/資料表時常見 utf8_general_ci 與 utf8_unicode_ci 兩種 Collation,官方文件指出核心差異在於「擴展字元比較」支援度與速度權衡。
| 項目 | utf8_general_ci | utf8_unicode_ci |
|---|---|---|
| Unicode 標準支援 | 舊版實作,不支援擴展 | 部分支援 UCA (Unicode Collation Algorithm) |
| 德語 ß 比較 | ß = s | ß = ss (符合語言規範) |
| 法語/德語排序 | 可用但細節不精確 | 準確 |
| 速度 | 快 (簡單逐碼位比較) | 略慢 (多級權重比較) |
| 中英環境差異 | 無實質差別 | |
utf8mb4_0900_ai_ci(基於 UCA 9.0),更準確且支援表情符號,新專案建議直接使用。# 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
SET NAMES utf8;