mysql utf8_unicode_ci 與 utf8_general_ci

您可以在這裏檢查和比較這兩種排序規則提供的排序順序:

https://collation-charts.org/mysql60/mysql604.utf8_unicode_ci.european.html

https://collation-charts.org/mysql60/mysql604.utf8_general_ci.european.html

utf8_general_ci 是一個非常簡單的排序規則。它的作用 - 它只是

  • 刪除所有重音
  • 然後轉換爲大寫 並使用這種“基本字母”結果字母的代碼進行比較。

例如,這些拉丁字母:ÀÁÅåāă(以及在任何情況下帶有任何重音的所有其他拉丁字母“a” )都被比較爲等於“A”。

utf8_unicode_ci 使用默認的 Unicode 排序規則元素表 (DUCET)。

主要區別是:

  1. utf8_unicode_ci 支持所謂的擴展和連字,例如: 德語字母 ß (U+00DF LETTER SHARP S) 排序在“ss”附近 字母 Œ (U+0152 LATIN CAPITAL LIGATURE OE) 排序在“OE”附近。

utf8_general_ci 不支持擴展/連字,它將 所有這些字母排序爲單個字符,有時順序錯誤。

  1. utf8_unicode_ci 通常對於所有腳本來說都更準確。 例如,在西里爾文塊上: utf8_unicode_ci 適用於所有這些語言: 俄語、保加利亞語、白俄羅斯語、馬其頓語、塞爾維亞語和烏克蘭語。 而 utf8_general_ci 僅適用於西裏爾字母的俄語和保加利亞語子集。 白俄羅斯語、馬其頓語、塞爾維亞語和烏克蘭語中使用的額外字母 排序得不好。

utf8_unicode_ci的缺點是它比utf8_general_ci慢一點。

因此,當您需要更好的排序順序時 - 使用 utf8_unicode_ci, 當您對性能完全感興趣時 - 使用 utf8_general_ci。

MySQL 8.0 參考手冊 >[Unicode 字符集]

本節介紹可用於 Unicode 字符集的排序規則及其區分屬性。有關 Unicode 的一般信息,請參閱 第 10.9 節 “Unicode 支持”。 MySQL 支持多種 Unicode 字符集: utf8mb4:Unicode 字符集的 UTF-8 編碼,每個字符使用一到四個字節。 utf8mb3:Unicode 字符集的 UTF-8 編碼,每個字符使用一到三個字節。MySQL 8.0 中已棄用此字符集,您應該改用它 utfmb4。 utf8: 的別名 utf8mb3。在 MySQL 8.0 中,該別名已被棄用;utf8mb4代替 使用。utf8預計在未來版本中將成爲 的別名utf8mb4。 ucs2:Unicode 字符集的 UCS-2 編碼,每個字符使用兩個字節。在 MySQL 8.0.28 中已棄用;您應該期望在未來的版本中刪除對此字符集的支持。 utf16:Unicode 字符集的 UTF-16 編碼,每個字符使用兩個或四個字節。類似ucs2,但帶有補充字符的擴展名。 utf16le:Unicode 字符集的 UTF-16LE 編碼。類似於utf16小端而不是大端。 utf32:Unicode 字符集的 UTF-32 編碼,每個字符使用四個字節。

該utf8mb3字符集已被棄用,您應該期望它會在未來的 MySQL 版本中被刪除。請改用utf8mb4。 utf8當前是 的別名 utf8mb3,但現在已被棄用,並且utf8預計隨後將成爲 的引用utf8mb4。從 MySQL 8.0.28 開始,utf8mb3也顯示在utf8信息模式表的列中以及 SQL 語句的輸出中 SHOW。爲了避免 的含義含糊不清 utf8,請考慮 utf8mb4顯式指定字符集引用。

https://forums.mysql.com/read.php?103,187048,188748#msg-188748 https://dev.mysql.com/doc/refman/8.0/en/charset-unicode-sets.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章