掲示板を作るときの文字コードでやられた話
こんにちは。最近会社でWeb開発の扉を開いた臼式です。
phpエエエエエ・・・。
C++erだった自分にとってはまさに未知の領域でした。
突如変数がわいたり、関数一つがやたらと便利だったりもうね・・。
とまあそんな感じの今日この頃ですが、課題の一環として2ちゃんねるみたいな掲示板作ってみようか。って言われて作ったときにやられた文字コードの落とし穴の話です。
-
データベースの文字コード
そもそも文字コードとはなんぞやって話ですが、
簡単に言ってしまえばコンピュータが文字を表現するための数値みたいなもんです。
MySQLでデータベースやテーブルを作成した後文字コードを確認してみると、
1行目のコマンドがデータベースサーバーのデフォルト設定を表示させています。
ご覧のとおりファイルシステム以外はutf8に設定されています。
この設定は特に指定しなければテーブルにも引き継がれます。
で、なにがいけないのかというと、
このままでは4バイト文字に対応してくれないから!!
-
テーブルの文字コードはutf8mb4で!
個人や狭いコミュニティだけで使う分にはあまり問題ないですが、
utf8で一文字の表現に4バイト必要な文字は残念ながらこのままでは
扱うことができません。↓こんな奴らです
そこで登場するのがutf84バイト文字対応版utf8mb4
テーブルを作成した後、
alter table テーブル名 default character set utf8mb4;
と打ってやると無事文字コードが変更され、4バイトを扱ってくれるようになります。
-
おわりに
今回掲示板を作ってみるまで4バイト文字やutf8mb4のことも知らず、打てるようにしてねと言われてから手こずりました。
もしphpの勉強がてら掲示板を作ってみようということになったら
実践してみて下さい。
また掲示板を作るまでの一通りの流れもアップしようと思います。