PHPとMySQLの文字化け

Javaのページですが、PHPMySQLとの間のやりとりで苦戦したので書いておきます。-saka

MySQLは「phpmyAdmin」というソフトを使っています。
文字化けをする場所はいくつかありますが、まずはデータベース上の文字コード設定。これは、データベースのデータフィールドが日本語を受け付けない設定になっている場合です。
確認の仕方は「phpmyAdmin」で直接日本語を打ち込んでみる。この段階で文字化けする場合はフィールドの設定を変える。照合順序と表示されているところを「utf8_general_ci」に変更します。

次にPHPでデータベースのデータを引っ張り出してHTMLに表示させるような場合。まずPHPのファイルをUTF8で保存するようにする。

それからmysql_connectでデータベースとのコネクションを確立したら、そのコネクションに対してmysql_set_charset( "UTF8", $link );こんな感じで文字コードをセットしてしまいます。

コネクションを確立した段階ではどのテーブルにアクセスするかなんかは全然決めてないわけだけど先にやってしまう。テーブルに対しての文字コード設定ではなくデータベースとの接続に関して文字コードを設定してしまうイメージです。

HTMLに表示する場合はHTMLに出力する文字コードもUTF8にあわせる。
ここまでで、データベースの日本語データをPHPで引っ張り出してHTMLで表示させる部分までの文字化け問題は解決してるはずです。

最後に、PHPからデータベースに日本語をINSERTする部分での文字化けですが、基本的にはデータベースとの間に文字コード設定ができあがってるのでSELECTできていればINSERTもできるはずなんだけどINSERTだけ文字化けするという場合、確認するのはPHPのファイルの文字コードにUnicordサイン(BOM)というのがついてないかという部分です。僕はここではまってました。