読者です 読者をやめる 読者になる 読者になる

掲示板を作るときの文字コードでやられた話

php MySQL

こんにちは。最近会社でWeb開発の扉を開いた臼式です。

phpエエエエエ・・・。

C++erだった自分にとってはまさに未知の領域でした。

突如変数がわいたり、関数一つがやたらと便利だったりもうね・・。

 

とまあそんな感じの今日この頃ですが、課題の一環として2ちゃんねるみたいな掲示板作ってみようか。って言われて作ったときにやられた文字コードの落とし穴の話です。

 

 そもそも文字コードとはなんぞやって話ですが、

簡単に言ってしまえばコンピュータが文字を表現するための数値みたいなもんです。

 

MySQLでデータベースやテーブルを作成した後文字コードを確認してみると、

f:id:Usushiki:20170320234756p:plain

1行目のコマンドがデータベースサーバーのデフォルト設定を表示させています。

ご覧のとおりファイルシステム以外はutf8に設定されています。

この設定は特に指定しなければテーブルにも引き継がれます。

 

で、なにがいけないのかというと、

このままでは4バイト文字に対応してくれないから!!

 

 

個人や狭いコミュニティだけで使う分にはあまり問題ないですが、

utf8で一文字の表現に4バイト必要な文字は残念ながらこのままでは

扱うことができません。↓こんな奴らです

f:id:Usushiki:20170321004251j:plain

そこで登場するのがutf84バイト文字対応版utf8mb4

テーブルを作成した後、

 

alter table テーブル名 default character set utf8mb4;

 

 と打ってやると無事文字コードが変更され、4バイトを扱ってくれるようになります。

 

  • おわりに

今回掲示板を作ってみるまで4バイト文字やutf8mb4のことも知らず、打てるようにしてねと言われてから手こずりました。

もしphpの勉強がてら掲示板を作ってみようということになったら

実践してみて下さい。

また掲示板を作るまでの一通りの流れもアップしようと思います。