MySQLにはキャラクタセットが 2 つ存在します。これらのキャラクタセットを使用し、約 650 の言語でテキストを保存することができます。
ucs2
(UCS-2 Unicode) 照合順序
ucs2_bin
ucs2_czech_ci
ucs2_danish_ci
ucs2_esperanto_ci
ucs2_estonian_ci
ucs2_general_ci
(デフォルト)
ucs2_hungarian_ci
ucs2_icelandic_ci
ucs2_latvian_ci
ucs2_lithuanian_ci
ucs2_persian_ci
ucs2_polish_ci
ucs2_roman_ci
ucs2_romanian_ci
ucs2_slovak_ci
ucs2_slovenian_ci
ucs2_spanish2_ci
ucs2_spanish_ci
ucs2_swedish_ci
ucs2_turkish_ci
ucs2_unicode_ci
utf8
(UCS-8 Unicode) 照合順序
utf8_bin
utf8_czech_ci
utf8_danish_ci
utf8_esperanto_ci
utf8_estonian_ci
utf8_general_ci
(デフォルト)
utf8_hungarian_ci
utf8_icelandic_ci
utf8_latvian_ci
utf8_lithuanian_ci
utf8_persian_ci
utf8_polish_ci
utf8_roman_ci
utf8_romanian_ci
utf8_slovak_ci
utf8_slovenian_ci
utf8_spanish2_ci
utf8_spanish_ci
utf8_swedish_ci
utf8_turkish_ci
utf8_unicode_ci
注:ucs2_roman_ci
とutf8_roman_ci
の照合順序では、I
とJ
およびU
とV
は等価として比較されます。
ucs2_hungarian_ci
とutf8_hungarian_ci
の照合順序はMySQL 5.1.5で追加されています。
MySQL
はutf8_unicode_ci
照合順序を、以下に示されるhttp://www.unicode.org/reports/tr10/Unicode
照合順序アルゴリズム(UCA)
によって実行されます。照合順序ではバージョン-4.0.0
UCAのウェイトキーが使用されます。http://www.unicode.org/Public/UCA/4.0.0/allkeys-4.0.0.txt
以下ではutf8_unicode_ci
を使用しますが、ucs2_unicode_ci
に対しても有効です。
現在、utf8_unicode_ci
照合順序はUnicode
照合順序アルゴリズムを部分的にのみサポートしています。中にはまだサポートされていない文字もあります。また、結合マークは完全にはサポートされていません。このことはベトナム語を中心に、ロシア内のマイノリティ言語に影響します。
utf8_unicode_ci
主な特徴は、拡張をサポートしていることです。それは1つの文字が他の文字のコンビネーションと等価であると比較された場合です。例えば、ドイツ語や他の言語では、‘ß
’
は‘ss
’に相当します。
utf8_general_ci
は拡張をサポートしないレガシー照合順序です。文字間で1対1の比較しかできません。つまり、utf8_general_ci
照合順序に対する比較の方が早いが、utf8_unicode_ci
に比べてわずかに正確性が劣ります。
例えば、以下の等式がutf8_general_ci
とutf8_unicode_ci
において証明されます。
Ä = A Ö = O Ü = U
照合順序間の違いはutf8_general_ci
に対して有効です。
ß = s
utf8_unicode_ci
にとって有効である場合:
ß = ss
MySQL
がutf8
キャラクタセットに対する特定言語の照合順序を実行するのはutf8_unicode_ci
内での順序が言語に対してうまく機能しないときだけです。
例えば、utf8_unicode_ci
はドイツ語とフランス語では正しく機能するので、これら2言語に対する特定のutf8
照合順序を作成する必要はありません。
utf8_general_ci
もドイツ語・フランス語ともに有効ですが、ただし‘ß
’は‘s
’と等価であり、‘ss
’と等価ではありません。これが使用しているアプリケーションに対して可能な場合、utf8_general_ci
の方が早いのでこちらをお勧めします。それ以外の場合、utf8_unicode_ci
を使うほうがより正確です。
utf8_swedish_ci
は他のutf8
特定言語の照合順序のように、追加言語ルールとともにutf8_unicode_ci
から由来します。例えば、スウェーデン語ではドイツ語やフランス語を使用するユーザでは予期しないような以下の関係が有効です
Ü = Y < Ö
utf8_spanish_ci
とutf8_spanish2_ci
照合順序は現代スペイン語および従来のスペイン語に対しても同様に対応します。両照合順序において‘ñ
’
(n-tilde)は、
‘n
’や‘o
’とは区別すべき文字です。さらに従来のスペイン語では‘ch
’
は‘c
’と‘d
’は区別すべき文字であり、‘ll
’は‘l
’と‘m
’とも区別すべき文字です。