PHPでの文字化け
2008.10.23
PHPでラジオボタンを作ったのですが、文字化けに悩まされてしまいました。

結局は、PHPの仕組みをよく理解できていなかっただけなのですが・・


PHPではフォームから情報を受け取ると、文字コードをEUC-JPに変換して処理します。
これをそのまま表示してしまうと、文字化けが起こってしまいます。
HTMLはShift_JISかUTF-8の場合が多いですし。


それでどうするかというと、データを表示する前に文字コードを変えてやります。

$str = mb_convert_encoding($str, "UTF-8", "EUC-JP");

こんな感じです。

たったこれだけ・・


これのどこに引っかかってたんだ、と自分でも少し思いましたが。
実はPHPの設定で、ソースを保存するときのコードとブラウザへ出力するときのコードが設定できて、それも合わせていろいろ試していたのが問題だったようです。


PHPでの処理はEUC-JPで行われるわけですから、設定は

「ソースをEUC-JPで保存し、ブラウザへEUC-JPで出力する」

としておいて、
ブラウザで表示させるときに任意の文字コードに変換する、というのが一番安定するようです。


おっしーでした。
| コメント(0)