blog.kotamiyake.me

為せば成る、為さねば成らぬ何事も

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

資料

既に詳細な情報を記事にしていただいている方がたくさんいるので、そちらを参照していただければよいかと思います。

MySQLの文字コードとCollation – Qiita

utf8mb4のそれぞれのcollationの違いについて解説されています。

MySQL 8.0ではデフォルトで濁点半濁点を区別しなくなる – かみぽわーる

MySQL8.0のデフォルトのcollationがutf8mb4_0900_ai_ciになったことについてのkamipoさんの見解。