• ベストアンサー

コードを作成してアクセスしたけどうまく表示されない

先日からPHPについて勉強を始めました。 「独習PHP」という本を参考にして独学で学んでいるのですが ApacheとPHPを四苦八苦しながらも何とかインストールでき 基本的なコードで書かれたPHPファイルを作成したのですが そのファイルへアクセスした際、英字は問題なく表示されるのですが ひらがな・漢字(恐らく2byte文字全般)がうまく表示されません。 PHPファイル内容と表示内容は以下の通りです。 PHPファイル <?php //print命令は指定された文字列を表示するための命令です。 print('hello,world!<br/>'); print('こんにちは、世界!'); ?> 表示内容 hello,world! ??????A??E! 上記のようになってしまいます。 まだ学び始めたばかりでつまずいてしまい、何がいけないのかわからず困っています。 原因がわかる方、どうかご教授お願いいたします。

  • PHP
  • 回答数3
  • ありがとう数4

質問者が選んだベストアンサー

  • ベストアンサー
  • inu2
  • ベストアンサー率33% (1229/3720)
回答No.1

PHPのソースを書いているときの文字コードは何ですか? ソースの文字コードとブラウザで表示しようとしている文字コードが違うからです

chocolat0
質問者

お礼

windows付属のメモ帳を使って保存していたので S-JIS になっていたようです。 色々調べて「peggy pad」というエディタでEUCで保存してみたところ 問題なく表示されるようになりました。 ありがとうございました。

その他の回答 (2)

  • ma2shin
  • ベストアンサー率41% (69/167)
回答No.3

ファイルをEUC-JPコードで保存して以下の行をファイルの先頭に追加します。 <?php header("Content-Type: text/html; charset=EUC-JP"); ?> そしてhtmlのheadの部分に以下の行を追加します。 <meta http-equiv="Content-Type" content="text/html; charset=EUC-JP"> phpの場合は、文字コードをEUC-JPに統一した方がいいです。 SJISで作ると後々面倒くさいです。

chocolat0
質問者

お礼

文字コードをEUCにしたところ問題なく表示できるようになりました。 S-JISよりEUCの方がよいのですね。勉強になります。 ありがとうございました。

  • memphis
  • ベストアンサー率40% (975/2395)
回答No.2

METAタグで文字コードを指定してあげればいいです。

chocolat0
質問者

お礼

PHPファイル保存時の文字コードがS-JISになっていたためうまく表示できなかったようです。 せっかくご教授いただいたことですのでMETAタグでの文字コード指定も 調べて勉強してみたいと思います。 ありがとうございました。

関連するQ&A

  • 変数の中身が出力されない

    下記のソースで、(1)の Hello World!! は出力されるのですが、(2)は何も出力されません。なぜでしょうか? <?php $hello = "Hello World!!"; ?> <HTML><BODY> (1) <?php print $hello; ?><BR> (2) <?= $hello ?><BR> </BODY></HTML> php.iniで register_globals = On にしても同じでした。 環境はPHP5、Apache2.2です。

    • ベストアンサー
    • PHP
  • PHP 文字化けについて

    初めまして。PHPに関して質問があります。 「独習PHP」に従ってPHPのインストールを行い、成功しました。しかし、 プログラムで「Hello,world!」と表示させることはできましたが、「こんにちは、世界!」と表示させようとすると、なぜか「AEI」と言う表示になってしまいます。いろいろ文字化けに関して検索し、実行してみましたがなかなかうまくいきません。もし分かる人がいれば、教えていただけませんでしょうか? なお、情報不足かもしれませんが、環境はXP/Apache2.063/PHP5.1.1です。

  • nl2brが効かないのですが・・・

    phpで、DBから取得した「Hello!! \n World!!!」という文字列を表示したところ。 「Hello!! \n World!!!」とそのまま表示されました。 いろいろ調べた結果、 $a = 'Hello!! \n World!!!'; echo nl2br($a); とシングルクォーテーションで文字列を囲った場合と同じことになっているとわかりました。 しかし、DBから取得して$aに突っ込むまでの作業はFuelPHPというフレームワークでやっており、 じゃあダブルクォーテーションで囲っちゃえばいいじゃん、とはいかないのかなと思います。 私が考えているやれることは、 1.FuelPHPのcoreの部分を修正する 2.nl2br($a)をnl2br(str_replace('\n',"\n",$a))のように一手間加える なのですが、気持ちがよくはありません。 もしかすると、 ・FuelPHPのconfigの問題 ・PHPやapache、DB(MySql)はたまたOSの何らかの設定の問題 なのかな、とは思いますが検討もつかない状況です。 誰か解決策をお持ちの方はいますでしょうか? 因みに、Webサーバーの環境は以下の通りです。 Windows7 HomePremium apache 2.2.21 php 5.3.8 fuelPHP 1.1 MySql 5.5(文字セットはutf-8)

    • 締切済み
    • PHP
  • 初心者 CGIがうまく表示できない hello worldが表示されない

    よろしくお願いします。 アパッチとアクティブパールはインストール済みです。(vistaです) C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\index.html で「It works!」は問題なく表示されます。 中身: <html><body><h1>It works!</h1></body></html> です。 次にCGIを表示する練習をしようと C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\perlbook というフォルダに ********************************* ファイル名:hello.cgi 中身: #!/Perl/bin/perl print << "eof"; content-type: test/html <html> <head> <title>cgi</title> </head> <body> hello world </body> </html> eof ********************************* を作り、ダブルクリックで開きましたが ブラウザには 「#!/Perl/bin/perl print << "eof"; content-type: test/html hello world eof」 が表示されます。 hello worldだけ表示されるはずだと思うのですが なぜ全てのタグが表示されてしまうのでしょうか? どこが間違っているのかご指摘よろしくお願いします。

    • ベストアンサー
    • Perl
  • Apacheが正常にインストールされたか、確認する

    Apacheが正常にインストールされたか、確認するには? http://www.apachelounge.com/ からhttpd-2.4.6-win64-VC11.zipをデスクトップに落として、 http://www.adminweb.jp/apache/install/index2.html を参考に、 C:\にpgフォルダを作成し、設定ファイルの修正をしたのですが、 アパッチがうまくインストールされ方どうやったらわかりますか? デスクトップに 中身が <?php echo"Hello world"; ?> の、hello.phpと言うファイルを作り、 http://localhost/hello.php を表示させてみたのですが、 「Internet Explorer ではこのページは表示できません」になります。 hello.phpの置き場がデスクトップなのがダメなのかもしれないのですが hello.phpをどこに入れればいいのでしょうか? そもそもアパッチが正常にインストールされてないから、表示されないのでしょうか? ちなみに、httpd.confは C:\pg\Apache\Apache24\conf にあります。

    • ベストアンサー
    • PHP
  • 外部のphpファイルを読み込んで表示させたい

    外部からスクリプトを呼び出して実行することはPHPどのようにすればよいのでしょうか? <?php print "Hello World!"; ?> というコードをhello.phpで保存して、サーバAにアップしました。 それで、サーバBからいつでもhello.phpを呼び出して、ページの表示内に組み込みたいのですが、そういうことは可能なのでしょうか? <?php $handle = fopen ("http://<サーバAのアドレス>/hello.php", "r"); print $handle; ?> をサーバBにアップしてブラウザからアクセスしてみましたが、上手くいきませんでした。 ちなみにサーバAのhello.phpのCHMODは755,755どちらに設定すればよいのでしょうか?ファイルが置かれているディレクトリのCHMODも変更するので しょうか?全部やってみましたがうまくいきませんでした。 どうぞよろしくお願いいたします。

    • ベストアンサー
    • PHP
  • SESSION変数と同じ変数名は使えないのかな?

    よろしくお願いいたします。 以下のように記述しました。 <?php session_start(); $_SESSION["abc"]="hello world!"; print("abc:1:{$_SESSION["abc"]}<br/>"); $abc="000"; print("abc:2:{$_SESSION["abc"]}<br/>"); ?> 1回目の実行は abc:1:hello world! abc:2:hello world! ですが、F5を押しますと、 abc:1:hello world! abc:2:000 となります。 デバッガ(Peggyですが)をかけると、見事に$abc="000";の行を実行 すると、$_SESSION["abc"]の値もかわります。 これは仕様なのでしょうか? Documentを見る限りわかりませんでした。 PHP5.2.0です。 以上、よろしくおねがいします。

    • ベストアンサー
    • PHP
  • PHPでPHPファイルを作成することはできますか?

    タイトルの通りの質問です。 http://example.jp/test.phpを実行すると、 tempというディレクトリが作成され、さらにその中に file.phpが作成するなんてことできませんか? file.phpの中身は ---ここから <?php echo "<html><body>hello world!</body></html>"; ?> ---ここまで …とし、当然ながら http://example.jp/temp/file.php にアクセスすると「hello world!」と表示されるようにしたいのですが。

    • ベストアンサー
    • PHP
  • ダブル、シングルクォーテーションでエラーが…

    はじめてプログラムに挑戦している者です。 独習PHPという本で、値がダブルクォーテーションで囲まれているか シングルクォーテーションで囲まれているかで、結果が違うという内容なのですが サンプル通りに入力して、ブラウザで表示すると サンプル <?php $title='サーバサイド技術の学び舎 - WINGS'; $data1="「$title」はサーバサイド技術の最新情報をお届けします。<br />"; $data2='「$title」はサーバサイド技術の最新情報をお届けします。<br />'; print($data1); print($data2); ?> ↓次のようなエラーが出てしまいます。 Parse error: parse error, expecting `']'' in C:\Apache Software Foundation\Apache2.2\htdocs\samples\chap2\variable2.php on line 3 どうすれば正しく表示されるようになりますでしょうか? よろしくお願いします。

    • 締切済み
    • PHP
  • ページの文字コードがUTF-8にならない

    PHP Version 5.1.6を使っています。 次のようにして、文字コードをUTF-8にしてコードもUTF-8で保存してアップロードし、 ページを表示しようとするとなぜか文字コードがShift_JISになったままで 何も表示されません。 ただ表示させてる"aaa・・・"をもう1行加えるとちゃんとUTF-8になり表示されます。 これから考えられる原因はなんなのでしょうか? print "<html>\n"; print "<head>\n"; print "<title>サンプル</title>\n"; print "<meta http-equiv=\"content-type\" content=\"text/html; charset=UTF-8\" />\n"; print "</head>\n"; print "<body>\n"; print "aaaaaaaaaaaaaaaaaaaaaaaaaaaa<br>\n"; print "aaaaaaaaaaaaaaaaaaaaaaaaaaaa<br>\n"; print "aaaaaaaaaaaaaaaaaaaaaaaaaaaa<br>\n"; print "aaaaaaaaaaaaaaaaaaaaaaaaaaaa<br>\n"; print "aaaaaaaaaaaaaaaaaaaaaaaaaaaa<br>\n"; print "</body>\n"; print "</html>\n";

    • ベストアンサー
    • PHP

専門家に質問してみよう