在MySQL建立新的schema時,如果要儲存中文,請選擇utf8mb4_unicode_ci
。
至於utf8mb4_unicode_ci
與utf8mb4_general_ci
的差別在哪呢?
差別一在於排序方法和準確性,簡單來說utf8mb4_unicode_ci
採用標準的Unicode排序所以比較精確,而utf8mb4_general_ci
並沒有完全實現標準的Unicode,所以在某些情況下utf8mb4_general_ci
的排序會有問題。
差別二是排序效能,utf8mb4_general_ci
比utf8mb4_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;
參考:
沒有留言:
張貼留言