mysql中的utf8mb四、utf8mb4_unicode_ci、utf8mb4_general_ci

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的對比:code

  • 準確性:
    • utf8mb4_unicode_ci是基於標準的Unicode來排序和比較,可以在各類語言之間精確排序
    • utf8mb4_general_ci沒有實現Unicode排序規則,在遇到某些特殊語言或者字符集,排序結果可能不一致。
    • 可是,在絕大多數狀況下,這些特殊字符的順序並不須要那麼精確。
  • 性能
    • utf8mb4_general_ci在比較和排序的時候更快
    • utf8mb4_unicode_ci在特殊狀況下,Unicode排序規則爲了可以處理特殊字符的狀況,實現了略微複雜的排序算法。
    • 可是在絕大多數狀況下發,不會發生此類複雜比較。相比選擇哪種collation,使用者更應該關心字符集與排序規則在db裏須要統一。
相關文章
相關標籤/搜索