@kodakana_ship10
it-talks/開発メモのことを語る

絵文字???が書き込めない問題の修正について

昨夜遅く、Twitter 連携関連の実装を行っていたところ、ここには絵文字を書き込めないことが判明。原因を調べてみると、データを格納する MySQL のデータベースに、文字コードとして utf8 ではなくて utf8mb4 を指定する必要があることがわかった。

したこと

一、データベースに ALTER 文で DEFAULT CHARACTER SET utf8mb4 を設定。
二、テキストが入る各テーブルのカラムに utf8 を設定していたので、ALTER 文で utf8mb4 に変更(一の手順は必要なかった?)。

これでデータベース側の準備は完了なのだが、プログラム側で入出力を行う際の文字コードも utf8mb4 にしないと、結局絵文字が抜けてしまう。ここでは PHP で MySQLi 関数を使っているので、

三、mysqli_set_charset() で指定する文字コードも utf8mb4 に変更する。

フロントエンドとなる HTML の文字コードは utf-8 のままで良いっていうのは、整合的でなくて美しくないような気がするが、ともかく問題はない模様。