php.iniの罠

今日詰まったのはこんなこと。

mySQLがデフォルトではlatin1という文字コードを使用していることは良く知られています。そのため、インストールして使っていると「あれ?日本語が入力できない!」なんてことで泣く人が大量にいたのが2000年代という時代でした。

まぁそんなわけで対MySQL用に次のような対策が考えられたわけです。

  1. データベースをつくるときに文字コードを設定する
  2. my.cnfにskip-character-shake-hands(かな?)を設定する(client側の文字コードを優先という意味)
  3. mysql上でSET CHARACTER UTF-8とかを使用して、文字コードを設定しなおす

この3つはどのページを参考しようとも絶対に書かれていることです。

さて、これらの対策の上でもう一つ気をつけたいことが、
それはphp.iniファイル。場所はlocateで探してもらえれば、と思いますが、この中にmb_stringという項目があります。

PHPをつかっている場合でここが、SQL文字コードと違っている場合
容赦なくデータ壊れますよ?
逆を返せば、この4つにさえ気をつけておけば、大丈夫なんじゃないかな?とか思います。
他にこんなので壊れた、とかあればお聞かせもらえれば幸いです。