LoginSignup
1
1

More than 1 year has passed since last update.

【Laravel】データベースの文字コードの設定

Last updated at Posted at 2020-10-26

疑問

Laravelプロジェクトにおいて、データベースの新規作成をphpmyadminを使って実施したときに、文字コードについてはそこまで注意しておらずデフォルトのままutf8mb4_general_ciを利用してきた。
しかし、あるとき疑問に思った。そのあとについてくるgeneral_ciは何だと。
スクリーンショット 2020-10-26 152231.png

結論

SQLにはcharsetとcollationがある。

  • utf8mb4_general_ciの、utf8mb4はcharsetを、general_ciはcollation(照合順序)を表す。
  • 日本語でWebページを作る場合は、utf8mb4_general_ciで良いことがわかった。
  • config/database.phpの文字コードの設定を見ると、デフォルトではutf8mb4_unicode_ciとなっている。これを以下のように変更しておくと、作成されるテーブルはutf8mb4_general_ciで作られる。
    config/database.php
    'mysql' => [
                //中略
                'charset' => 'utf8mb4',
                'collation' => 'utf8mb4_general_ci', //'utf8mb4_unicode_ci'から変更した
                //中略
            ],
    
  • 個別にテーブル作成時のマイグレーションファイルに、
    $table->collation = 'utf8mb4_general_ci';とすることでもcollationを指定できる。

参考記事

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1