PHPの勉強を始めてみたらいきなり日本語が文字化けする問題につまづきました。これは独学なら同じところでつまづく人も多いのでは?と思うので解決策を残しておきます。
MAMP側を何かいじったりする必要は多分ないと思います。ざっくり言うと問題の原因は「HTMLでウェブページを表示する時の“お作法”を知らないがために起きる問題」という感じでした。
プログラミング初心者がMAMPでつまづく日本語の文字化けとその対策
私がハマったのは、入力フォームを表示するという超初歩的なお勉強をしている時でした。
こんな風に文字化けしてしまいました。Chromeの何かが関係しているのかと疑ってSafariでも見てみましたが変わらず。
「MAMP 文字化け」と検索すると『php.iniファイルを開いて数カ所(文字コードを UTF-8に)書き換える』みたいな内容の古い記事ばかりが出てきます。
古い記事だし、どうなのかなと疑心暗鬼になりながらも、他にどうしていいか分からず一応それに従ってファイルの書き換え→MAMP再起動をしてみました。しかし結果は文字化け直らず。
HTMLの書き方があるらしい
うんうん頭を抱えていたら、こんなページにたどり着きました。
リンク MAMP PHP文字化け。 – 現在MAMPをインストールしてPHPを学習し始めたと… – Yahoo!知恵袋
ヤフー知恵袋ですが、ちょうど私と同じ問題にぶち当たっていた人の質問っぽいです。
回答を見て「そうか!」とひらめきました。
HTTPヘッダ、XML宣言、HTMLヘッダ、に省略せずキッチリとエンコードが UTF-8 である事を明示してみてください。
要するにHTMLの書き方の問題なのか、と。
ちなみに私はこちらの本を参考に勉強しています。
で、そういえば前の方のページに HTML のテンプレート的なものが載っていたよな。あれを使えばいいのかな? ということで、以下のHTMLコードを先のフォームを表示するために書いたファイルに記述しました。
<!DOCTYPE html PUBLIC "-//w3c//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> <title>PHP入門</title> </head> <body> <!-- ここにプログラムを記述します --> </form> </body> </html>
「ここにプログラムを記述します」の次の行からフォームを表示するためのソースを記述。で、ブラウザで確認してみると
ばっちり。
「エンコード」が何かまだ現時点では分かっていませんが、とにかく指定してやる必要があるようです。
注意点
私は先にMAMPのphp.iniファイルの一部を書き換える作業をしてしまいました。戻すのも億劫なのでそのままですが、これは書き換えた方が良いのかどうか分かりません。
もし書き換えずに上記のHTMLのお作法を記述してみても文字化けが直らない場合は、php.iniファイルの一部の書き換え作業もしてみてください。その点については下記リンク先の情報を頼りに。(不要っぽいですが)
リンク MAMPのPHPでの文字化けを直す | memocarilog
▼今の本の次はこちらで勉強してみようと思っています。
コメント