MySQLの文字コードの設定で毎回どうするのがいいのだっけ、と迷ってしまうのでちゃんと調べてみました。
その備忘録として。
開発環境
- MySQL 8.0.16
結論
文字コードに関しては下記の設定のみあれば良さそう。
[mysqld] collation-server=utf8mb4_bin
8.0.1以降はそれぞれの文字コードにはutf8mb4がデフォルトで使われているので、特に変更は必要なさそうです。
mysql> show variables like "%char%"; +--------------------------+--------------------------------+ | Variable_name | Value | +--------------------------+--------------------------------+ | character_set_client | utf8mb4 | | character_set_connection | utf8mb4 | | character_set_database | utf8mb4 | | character_set_filesystem | binary | | character_set_results | utf8mb4 | | character_set_server | utf8mb4 | | character_set_system | utf8 | | character_sets_dir | /usr/share/mysql-8.0/charsets/ | +--------------------------+--------------------------------+ 8 rows in set (0.00 sec)
MySQL :: MySQL 8.0 Reference Manual :: 5.1.8 Server System Variables
資料
既に詳細な情報を記事にしていただいている方がたくさんいるので、そちらを参照していただければよいかと思います。
utf8mb4のそれぞれのcollationの違いについて解説されています。
MySQL 8.0ではデフォルトで濁点半濁点を区別しなくなる – かみぽわーる
MySQL8.0のデフォルトのcollationがutf8mb4_0900_ai_ciになったことについてのkamipoさんの見解。