mysql中的utf8mb4、utf8mb4_unicode_ci、utf8mb4_general_ci
阿新 • • 發佈:2018-09-06
常用 精確 基本 算法 utf-8 strong 對比 utf8mb4 不常用
1.utf8與utf8mb4(utf8 most bytes 4)
- MySQL 5.5.3之後增加了utfmb4字符編碼
- 支持BMP(Basic Multilingual Plane,基本多文種平面)和補充字符
- 最多使用四個字節存儲字符
utf8mb4是utf8的超集並完全兼容utf8,能夠用四個字節存儲更多的字符。
標準的UTF-8字符集編碼是可以使用1-4個字節去編碼21位字符,這幾乎包含了世界上所有能看見的語言。
MySQL裏面實現的utf8最長使用3個字符,包含了大多數字符但並不是所有。例如emoji和一些不常用的漢字,如“墅”,這些需要四個字節才能編碼的就不支持。
2.字符集、連接字符集、排序字符集
utf8mb4對應的排序字符集有utf8mb4_unicode_ci、utf8mb4_general_ci.
utf8mb4_unicode_ci和utf8mb4_general_ci的對比:
- 準確性:
- utf8mb4_unicode_ci是基於標準的Unicode來排序和比較,能夠在各種語言之間精確排序
- utf8mb4_general_ci沒有實現Unicode排序規則,在遇到某些特殊語言或者字符集,排序結果可能不一致。
- 但是,在絕大多數情況下,這些特殊字符的順序並不需要那麽精確。
- 性能
- utf8mb4_general_ci在比較和排序的時候更快
- utf8mb4_unicode_ci在特殊情況下,Unicode排序規則為了能夠處理特殊字符的情況,實現了略微復雜的排序算法。
- 但是在絕大多數情況下發,不會發生此類復雜比較。相比選擇哪一種collation,使用者更應該關心字符集與排序規則在db裏需要統一。
mysql中的utf8mb4、utf8mb4_unicode_ci、utf8mb4_general_ci