網頁

2018/5/4

MySQL 資料庫schema中文的Collation要選擇什麼?

在MySQL建立新的schema時,如果要儲存中文,請選擇utf8mb4_unicode_ci

至於utf8mb4_unicode_ciutf8mb4_general_ci的差別在哪呢?
差別一在於排序方法和準確性,簡單來說utf8mb4_unicode_ci採用標準的Unicode排序所以比較精確,而utf8mb4_general_ci並沒有完全實現標準的Unicode,所以在某些情況下utf8mb4_general_ci的排序會有問題。
差別二是排序效能,utf8mb4_general_ciutf8mb4_unicode_ci效能好一些,因為utf8mb4_unicode_ci為了處理特殊符號的比較所以演算法比較複雜。

那可以用utf8_unicode_ci嗎? 因為utf8_unicode_ci只支援3-byte字符,無法完全支援所有的UTF-8符號,導致一堆常用的4-byte的Unicode中文出現錯誤。所以請直接用utf8mb4_unicode_ci,別用utf8_unicode_ci

總之建議選utf8mb4_unicode_ci


使用下面指令來查詢資料庫schema的字符集編碼及Collation設定

USE database_name;
SELECT @@character_set_database, @@collation_database;


參考:

沒有留言:

張貼留言