utf8mb4_general_ciとutf8mb4_unicode_ciの違い

utf8mb4_general_ciとutf8mb4_unicode_ciの違いってなんだっけ?と思った時の覚書。

環境: MariaDB 10.5.9


参考サイト


utf8mb4_general_ciとutf8mb4_unicode_ciの違いは、文字比較と照合順序の違い

両方とも半角大文字と半角小文字は同じ文字と判断するが、utf8mb4_general_ciはカタカナとひらがなを別文字として扱う。

いざとなればSQL文を発行するときにcollateで指定できるので、generalかunicodeかはそこまで神経質にならなくても良さそう。

基本はutf8mb4_general_ciでいい。


設定・確認方法
# less /etc/my.cnf.d/mariadb-server.cnf

[server]
character-set-server = utf8mb4
collation-server = utf8mb4_general_ci

設定変更したら再起動が必要
# systemctl restart mariadb

データベース変数を確認する(phpMyAdminでもOK)。
# mysql -p
> show variables like "%coll%";
> show variables like "%char%";


ちなみにWordPressのwp-config.phpにあるDB_COLLATEは設定しなくてもデータベースのデフォルト値を取得して設定する。


【関連記事】