MySQL 編碼
utf8_unicode_ci 在對文字排序上會比 utf8_general_ci 更精準,utf8_general_ci 是一種簡易化的排序規則,這個規則會把一些相似文字的定義成同一層排序,所以文字排序上無法像 utf8_unicode_ci 這麼精準。utf8_general_ci 的效能會比 utf8_unicode_ci 好一些,不過影響的效能很小,很難感受出差別,除非你真的很在意這種微小的效能差異,否則建議使用 utf8_unicode_ci 就可以了。
如果各位朋友是第一次安裝的話,則非常建議你將 SQL 資料夾編碼改使用 utf8_unicode_ci,才不會照成未來搬家的問題。 若會存中文、德文…等非英文的字、或存 Emoji 的話,建議用 utf8mb4_unicode_ci,在 MySQL 5.5.3 以後,一般來說會建議用 utf8mb4。因為它才是真正的 UTF-8 編碼,且完全兼容 utf8。utf8 速度比較快但只支援三個字元長度的字,這代表部份中文字以及 Emoji 要存入的時候會噴錯。因為 utf8 這個名字實在是太令人混淆了,很多人會誤以為它就是 UTF-8 編碼,因此後來官方也做了一些調整,將它改名為 utf8mb3,mb3 指的是用三個位元組儲存,mp4 則是用四個位元組儲存的意思。
[*]general 版本(例如 utf8mb4_general_ci),在排序時比較快,但在某些特殊情況會排錯。
[*]unicode 版本(例如 utf8mb4_unicode_ci),實作了完整的 Unicode 標準。
[*]ci 是指 case-insensitive,例如 utf8mb4_unicode_ci 是不分大小寫的
[*]cs 是指 case-sensitive,例如 utf8mb4_unicode_cs 是會區分大小寫的
[*]bin 會用 binary value 比對,例如 utf8mb4_bin 會區分大小寫的且也會區分 Ä 和 A 的不同
到了 MySQL 8.0 時, Oracle 將 utf8mb4 設為了預設編碼,也做了大幅的效能優化,變得比 utf8mb3 快很多,因此再也沒有使用舊編碼的理由了,舊編碼也被官方標為 deprecated,在未來會被移除掉。
頁:
[1]