MySQLWorkbenchにリストされている照合順序の違いを理解するのを手伝ってください。
utf8mb4_unicode_ci
vs utf8mb4 - default collation
p.s.誰もがutf8mb4_unicode_ci
の使用を推奨しています。これが非常に人気がある場合、なぜデフォルトではないのですか?デフォルトと何が違うのですか?
MySQL5.7.21を使用しています。
utf8mb4_default
??これはどこにありますか?
Utf8mb4のデフォルトの照合順序はutf8mb4_general_ciです。これは一度に1バイトのみをチェックするため、ss
はß
と等しいとは見なされません。 utf8mb4の他の照合のほとんどは、それらが等しいと見なします。
(スペイン語固有などではなく)一般的な使用のための「より良い」照合のリストの次はutf8mb4_unicode_ci
です。これは、数年前に作成されたUnicode照合アルゴリズムバージョン4.0と一致します。
次に、utf8mb4_unicode_520_ci
(Unicode 5.20)が登場します。これは、より多くのことを「正しく」処理します。
MySQL 8.0にアクセスすると、9.0バージョンのutf8mb4_0900_ai_ci
があります。
違いの詳細については、 http://mysql.rjweb.org/utf8_collations.html を参照してください。 (注:「utf8」と「utf8mb4」は、そのページで提供される情報に対して同じように機能します。)最初に注意すること:
utf8_general_ci A=a=À=Á=Â=Ã=Ä=Å=à=á=â=ã=ä=å=Ā=ā=Ą=ą Aa ae az
utf8_unicode_ci A=a=ª=À=Á=Â=Ã=Ä=Å=à=á=â=ã=ä=å=Ā=ā=Ą=ą Aa ae az Æ=æ
utf8_unicode_520_ci A=a=ª=À=Á=Â=Ã=Ä=Å=à=á=â=ã=ä=å=Ā=ā=Ą=ą Aa ae=Æ=æ az
これらの3行は、Æ
とæ
の3つの異なる処理を示しています。
Z
の後にソートされていることがわかります。)ae
と等しいものとして扱います。5.7の場合、特定の言語要件がなければ、utf8mb4_unicode_520_ci
を使用します。
「なぜ」という質問に戻りましょう。デフォルトを変更すると、既存のインストールに役立つ以上の損害を与えるリスクがあります。ですから、デザイナーは保守的だったと思います。一方、8.0には大きな変更がたくさんあるので、変更することへの抵抗は少なくなりました。したがって、utf8mb4_0900_ai_ciに移動します。