PHPスクリプトをブラウザ表示したら文字化けしちゃった(泣)
せっかくPHPを練習しようとスクリプトを書いたのに、いざブラウザに表示すると文字化けが・・・。
だいたい誰でも最初に1回ハマるポイントだと思います。
解決するには、スクリプトの文字コード・HTMLの文字コード・テキストエディタの文字コードを統一してやりましょう。
目次 Table of Contents
文字コードはEUC-JPかUTF-8にしませう
苦労してPHPの開発環境を整えたのに、文字化けしてしまった~!
ご安心ください。あと少しで完成です。
文字化けしているということは、少なくとも出力されるところまでいってますので、あとは文字コードだけです。
PHPスクリプトの文字コード指定は、スクリプトの先頭に次のように記載します。
上の例は文字コードUTF-8を指定した場合です。
EUC-JPの場合は右の文字コードのところを変えてあげます。
デフォルトでこの文字コードを使う!っていう設定は、PHPの設定ファイルであるphp.iniで設定できます。
php.iniの設定は他の機会で解説したいので、ここではとりあえずPHPファイルごとに設定するやり方で解説しています。
これでも文字化けが直らないこともあります。
原因はHTMLの文字コード設定をしていないためです。
HTMLで明示的に文字コードを指定するには、次のmetaタグを使います。
もちろんECU-JPの場合はcharsetのところを変えてあげましょう。
文字コードはどれにすればいいのかについては、ECU-JPかUTF-8のどちらかを利用しましょう。
どっちでもいいかなと思います。ざっくりの違いとしては以下のような感じです。
EUC-JP
- EUC-JPはUNIXシステムでの日本語利用時のスタンダードとされている
UTF-8
- 多言語共通化技術であるUnicodeによって文字の変換を行う
- XHTMLのデフォルト文字コードはUTF-8である
- 海外からのアクセスを想定する場合、最も文字化けがおこりにくい
だいたいですが、以上のような違いがあります。
SHIFT-JISじゃなければどっちでもお好みで。
SHIFT-JISはマイクロソフトが生み出した日本語文字コードですが、ワード・エクセルなどのマイクロソフト製品以外との親和性が低いので、使わない方がいいです。
(Web制作でこの文字コードを使うとカッコ悪いです。)
ちなみに僕はUTF-8を使っています。
テキストエディタの文字コード指定も忘れずに
最後に忘れちゃいけないのが、PHPスクリプトを書くときに使うテキストエディタの文字コード設定です。
テキストエディタは、メモ帳とかですね。
僕はTerapadを使っています。
(TerapadでUTF-8に指定する場合、表示-オプション-文字コードから、初期文字コードと保存文字コードを「UTF-8N」にします。あと改行コードは「CR+LF」にします。)
Windows環境でPHPを作る場合、テキストエディタはメモ帳ではなく他のエディタを使いましょう。
前述したように、メモ帳もマイクロソフトのアプリなので文字コードがデフォルトでSHIFT-JISです。
コメントフォーム
自分の勉強にもなりますので、コメントいただけるとうれしいです。