MariaDB/MySQLにログインして、以下を入力しました。
SHOW COLLATION;
そうですか utf8mb4_unicode_ci
およびutf8mb4_unicode_520_ci
使用可能な照合の中で。これら2つの照合順序の違いは何ですか?どちらを使用する必要がありますか?
さて、ドキュメントを読む必要があります。すべてのプロジェクトが異なるため、何を使用すべきかを説明できません。
MySQL照合名は次の規則に従います。
照合名は、関連付けられている文字セットの名前で始まり、他の照合特性を示す1つ以上の接尾辞が続きます。たとえば、utf8_general_ciおよびlatin_swedish_ciは、それぞれutf8およびlatin1文字セットの照合です。
言語固有の照合には言語名が含まれます。たとえば、utf8_turkish_ciとutf8_hungarian_ciは、それぞれトルコ語とハンガリー語の規則を使用して、utf8文字セットの文字をソートします。
ソートの大文字と小文字の区別は、_ci(大文字と小文字を区別しない)、_ cs(大文字と小文字を区別する)、または_bin(バイナリ、文字比較は文字バイナリコード値に基づいています)で示されます。たとえば、latin1_general_ciは大文字と小文字を区別せず、latin1_general_csは大文字と小文字を区別し、latin1_binはバイナリコード値を使用します。
Unicodeの場合、照合名には、照合が基づくUnicode照合アルゴリズム(UCA)のバージョンを示すバージョン番号が含まれる場合があります。名前にバージョン番号のないUCAベースの照合では、バージョン-4.0.0 UCAウェイトキーを使用します。例えば:
utf8_unicode_ci(名前付きバージョンなし)は、UCA 4.0.0ウェイトキーに基づいています>( http://www.unicode.org/Public/UCA/4.0.0/allkeys-4.0.0.txt )。
utf8_unicode_520_ciは、UCA 5.2.0の重みキーに基づいています( http://www.unicode.org/Public/UCA/5.2.0/allkeys.txt )。
Unicodeの場合、xxx_general_mysql500_ci照合順序は、元のxxx_general_ci照合順序の5.1.24以前の順序を保持し、MySQL 5.1.24より前に作成されたテーブルのアップグレードを許可します。詳細については、セクション2.11.3「テーブルまたはインデックスを再構築する必要があるかどうかの確認」およびセクション2.11.4「テーブルまたはインデックスの再構築または修復」を参照してください。
ソース: https://dev.mysql.com/doc/refman/5.6/en/charset-collation-names.html
@ StuiterSlurf を開発し、utf8mb4_unicode_ci
/utf8mb4_unicode_520_ci
の詳細に焦点を当てます。
こちら (Peter Gulutzan)を読むことができるように、ポリッシュ文字「Ł」のソート/比較に問題があります(ストロークでL )(小文字: "ł"; html esc:ł
およびŁ
)-コーディングには以下の仮定があります(mb4
と同じ):
utf8_polish_ci Ł greater than L and less than M
utf8_unicode_ci Ł greater than L and less than M
utf8_unicode_520_ci Ł equal to L
utf8_general_ci Ł greater than Z
ポーランド語では、文字letterは文字Lの後、Mの前にあります。異なるコーディングシステムでは、異なるソート結果が得られます。このコーディングのどれも良くも悪くもありません-それはあなたのニーズに依存します。
実際の違いについてもう少し議論するには、 https://dev.mysql.com/worklog/task/?id=267 にアクセスして、「High Level Architecture」をクリックしてください。