入力内容が 100% 確実ではない一般的な Web サイト向けに、MySQL によって公式に推奨されている照合タイプはありますか? MySQL、Apache、HTML、PHP 内のすべてなど、すべてのエンコーディングが同じである必要があることは理解しています。
以前、PHP を「UTF-8」で出力するように設定しましたが、これは MySQL ではどの照合順序と一致しますか? UTF-8 のいずれかだと思いますが、以前は 、 、 を使用したことがあり、utf8_unicode_ci
これらutf8_general_ci
のutf8_bin
「utf8」がどれにマップされるのか、またはそれが使用するのが最適かどうかはわかりません。
ベストアンサー1
主な違いは、ソート精度(言語内の文字を比較する場合)とパフォーマンスです。唯一の特別な違いは、バイナリ形式で文字を比較するための utf8_bin です。
utf8_general_ci
は よりもいくらか高速ですutf8_unicode_ci
が、(ソートに関しては)精度は劣ります。特定の言語の utf8 エンコーディング( などutf8_swedish_ci
)には、それらの言語で最も正確にソートするための追加の言語ルールが含まれています。 特定の言語を優先する正当な理由がない限り、ほとんどの場合、 を使用しますutf8_unicode_ci
(わずかなパフォーマンスの向上よりも精度を優先します)。
特定のUnicode文字セットの詳細については、MySQLマニュアルを参照してください。文字セット ユニコード セット