web-dev-qa-db-ja.com

なぜutf8mb4_unicode_ciではなくutf8mb4_general_ciを使用しているのですか?

Drupalはutf8mb4をサポートするように移行していますが、utf8nb4_general_ciを使用しています。それをサポートするために時間をかけて移動してから、完全にサポートしないのはなぜですか?特定の理由はありますか、それとも以前からutf8_general_ciを継続しているだけですか?

これを無視してとにかくユニコードを使用することで何か問題がありますか?

Drupalチケット: MySQLドライバーは完全なUTF-8(絵文字、アジアの記号、数学記号)をサポートしていません

これはスタック交換に関する 質問 です。これは、本当に今日ではUnicodeを使用しない理由はなく、最後にこれについて question は、「utf8_general_ciは拡張、縮小、または無視できる文字をサポートしないレガシー照合です」と述べています。

WordPressはutf8mb4_unicode_ciを使用します。

6
Paul

推奨事項は古く、utf8mb4_unicode_ciは問題なく機能するようです。長い間多くの人に利用されてきました。


文字セットをutf8からutf8mb4に変更する(より多くのコードポイントをサポートする)と、照合順序をgeneral_ciからunicode_ciに変更する(より正確なソートを取得する)には違いがあります。 。どちらの変更も独自の問題を引き起こす可能性があるため、両方を個別に行うことは理にかなっています。

utf8mb4は8.0.0-beta12以降でデフォルトで使用されます 。主な問題はInnoDBのキーの長さの制限の変更であるように見えましたが、私が理解しているように、utf8mb4はその変更前でもデフォルトのMyISAMエンジンで動作するはずでした。

unicode_ciに切り替えても問題は発生しませんが、一部のサイトのソート順が予期せず変更される可能性があります。

デフォルトの照合設定はdefaultであり、モジュールは必要に応じて独自の照合を選択できます。また、モジュールには特定の照合順序が必要であることを示すドキュメントも見つかりませんでした。 データベースインストールガイド は、サポートされている照合順序についての明確な説明が欠けており、一貫性がありません。

  • PhpMyAdminに関するセクションでは、

    COLLATION utf8_general_ciを選択していることを確認してください

  • コマンドラインからのインストールに関するセクションの後半では、general_ciは必要ないようで、UTF-8照合は次のようになります。

    注:データベースは、utf8_general_ciなどのUTF-8(Unicode)エンコードで作成する必要があります。

さらに、PostgreSQLがサポートされており、デフォルトのUTF-8照合はutf8mb4_unicode_ciと同等であるため、MySQLでそれを使用しても問題ありません。

9
kapex