MySQLで絵文字が文字化けしてしまう時の対処法

PHPにPOSTリクエストすると、絵文字が????になってしまいました。。

今回はその解決法をメモしましたので、シェアします。

解決法

MySQLの文字コードを全てutf8からutf8mb4に変更する。
(データベース・テーブル・カラム名・PDOの設定も含めて)

データベースの変更

ALTER DATABASE データベース名 DEFAULT CHARACTER SET utf8mb4;

テーブルの変更

ALTER TABLE テーブル名 DEFAULT CHARACTER SET utf8mb4;

カラム名の変更

ALTER TABLE テーブル名 MODIFY カラム名 データ型 CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci

PDO接続の変更

$dsn = 'mysql:host=localhost;dbname=データベース名;charset=utf8mb4';

charsetの部分をutf8mb4に変更する。

参考:
https://alaki.co.jp/blog/?p=1814

コメント

タイトルとURLをコピーしました