utf8mb4_unicode_ci
を使用します 列の場合、チェックでは大文字と小文字が区別されません。 utf8mb4_bin
を使用する場合 代わりに、絵文字🌮と🌶は異なる文字として正しく識別されます。
WEIGHT_STRING
を使用
入力文字列の並べ替えと比較に使用される値を取得できます。
あなたが書く場合:
SELECT
WEIGHT_STRING ('🌮' COLLATE 'utf8mb4_unicode_ci'),
WEIGHT_STRING ('🌶' COLLATE 'utf8mb4_unicode_ci')
次に、両方が0xfffd
であることがわかります。 。 Unicode文字セット
彼らは言う:
あなたが書く場合:
SELECT
WEIGHT_STRING('🌮' COLLATE 'utf8mb4_bin'),
WEIGHT_STRING('🌶' COLLATE 'utf8mb4_bin')
ユニコード値0x01f32e
を取得します および0x01f336
代わりに。
Ä
のような他の文字の場合 、Á
およびA
utf8mb4_unicode_ci
を使用する場合は同じです 、違いは次のように確認できます:
SELECT
WEIGHT_STRING ('Ä' COLLATE 'utf8mb4_unicode_ci'),
WEIGHT_STRING ('A' COLLATE 'utf8mb4_unicode_ci')
それらは重み0x0E33
にマップされます
Ä: 00C4 ; [.0E33.0020.0008.0041][.0000.0047.0002.0308] # LATIN CAPITAL LETTER A WITH DIAERESIS; QQCM
A: 0041 ; [.0E33.0020.0008.0041] # LATIN CAPITAL LETTER A
によると: MariaDB / MySQLのutf8mb4_unicode_ciとutf8mb4_unicode_520_ciの照合の違いは?
utf8mb4_unicode_ci
に使用される重み UCA4.0.0
に基づいています 絵文字が表示されないため、マップされた重みは0xfffd
です。
大文字と小文字を区別しない比較と絵文字付きの通常の文字の並べ替えが必要な場合、この問題はutf8mb4_unicode_520_ci
を使用して解決されます。 :
SELECT
WEIGHT_STRING('🌮' COLLATE 'utf8mb4_unicode_520_ci'),
WEIGHT_STRING('🌶' COLLATE 'utf8mb4_unicode_520_ci')
これらの絵文字0xfbc3f32e
にも異なる重みが付けられます および0xfbc3f336
。