• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:htmlを含まないphpファイルにもHTMLヘッダー内にエンコード形式を記述する必要はあるのでしょうか?)

HTMLを含まないphpファイルにエンコード形式を記述する必要はある?

utano_mの回答

  • ベストアンサー
  • utano_m
  • ベストアンサー率45% (14/31)
回答No.1

結論から言うと、書く必要があります。 PHPがレスポンスを返す場合、何も指定がなければ、 PHPが自動的にhttpヘッダー(HTMLのヘッダー部やmetaタグではない)に "Content-Type:text/html"を付加して送信します。 ブラウザ側はそのhttpヘッダー情報を読み、html文書であると解釈して echoやprintで出力された文字列を表示します。 metaタグもなくHTMLの書式でもない文字列がまともに表示されるのは ブラウザがHTML文書だと解釈して足りない部分を補完してくれる機能があるからです。 文字コードについても同様に(単なる文字列にはエンコード指定がないため) ブラウザが独自に判断して「たぶんこれ」と思う文字コードで解釈します。 httpヘッダーについては自動で付加("Content-Type:text/html"の場合)されるので 意識する必要はありませんが、ユーザー側のブラウザにHTML補完機能や エンコード自動解析の機能が必ず備わっていると期待するべきではありません。 WEB標準(が確立されているかどうか微妙ですが)に準拠したHTML文書を送信するのが無難でしょう。 function html_message( $msg = "" ) { print <<<HERE <!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>Message</title> </head> <body>  $msg </body> </html> HERE; } 私の場合上記のような関数をつかう等しています。

参考URL:
http://php.planetmirror.com/manual/ja/function.header.php
kitty1000
質問者

お礼

utano_mさん ご回答ありがとうございました。 良く理解できました。 キャサリン

関連するQ&A

  • [HTML-PHP]あるPHPファイルだけ文字化け

    お世話になります。 XP/PHP5.2.9/Apache2.2.11 の環境で、簡単なシステムを作っているのですが、その際に PHP側で header( "Content-Type: text/html;charset=shift_jis"); HTML側で <meta http-equiv="content-type" content="text/html; charset=shift_jis"> と明示的にSJISにしているのですが、実際にローカルで確認すると文字化けしてしまうPHPファイルがあります。(1ファイルのみ) 他のPHPファイルは同様のヘッダー情報を送信していますが、文字化けせずに画面出力されています。 HTML-PHP初心者のため、補足等必要になるとは思いますが、どうぞご教授下さい。

    • ベストアンサー
    • PHP
  • HTMLとPHPファイルのエンコードについて

    【自分のしたいこと】 入力フォームなどのHTMLのデザイン(テーブルやその他のコントロール)だけを Adobe DreamWeaverを採用して作成し、その他の修正などは外部エディタ(秀丸など) で行いたいのです。PHPファイルに関しては、外部エディタで手書きでもかまわないと 思っています。 ※プロバイダーはニフティのLACOOCANを利用しています。 ---------------------------------------------------------------------- 【質問】 (1)その場合に、DreamWeaverの編集>環境設定メニューで、自分は HTMLファイル→HTML 4.01 トランジショナル エンコーディング初期設定:日本語(シフト JIS) エンコーディングが指定されていない既存ファイルを開くとき:チェックしてる UniCode正規形:C(標準分解の後で標準合成を適用) PHPファイル→初期設定ドキュメントタイプ:なし エンコーディング初期設定:日本語(EUC) エンコーディングが指定されていない既存ファイルを開くとき:チェックしてる という設定にしているのですが、これで問題ないのでしょうか? 以前読んだ解説本によれば、PHPファイル保存時に ・ファイルの種類:すべてのファイル ・エンコードの種類:日本語(EUC) ・改行=LF にしろと書いてありましたし、この設定でLACOOKANのWEBサーバーで ちゃんと動作していました。 普通、プロバイダーのサーバーマシンなどの汎用コンピューターで標準採用されている エンコード方式がEUC-JP だからなのでしょうか。 (2)DreamWeaverの環境設定メニューで、初期エンコードタイプを指定すれば(たとえば、charset=utf-8)、その設定時に書いたコードのMETAタグで、 <meta http-equiv="Content-Type" content="text/html; charset=utf-8*"> となるのでしょうか。つまり、DreamWeaverの環境設定メニューで設定した値がコードに即反映される のでしょうか。 (3)DreamWeaverの作成したフォームのデザインを、コードに切り替えてみると <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> というのが、文頭についてきますが、このタグを自分で勝手に外しても問題ないのでしょうか。 (4)以上、(1)から(3)について、回答頂き納得したうえで、上記の「自分がしたいこと」 が可能かどうかお答えお願いします。

    • ベストアンサー
    • PHP
  • コード上の埋込み漢字コードの文字化け

    PHP のソースコード上に埋め込んでいるべた書きの2バイトコードが 文字化けを起こしてしまいます。以下、経緯を含め詳しく書きます。 1.HTMLのFORMよりデータを入力。(toiawase.html) 2.PHPにて、入力データをWebブラウザ上に表示して確認。(mail_kakunin.php) 3.PHPにて、確認済みのデータをmail()関数にて送信。(mail_send.php) 上記の状態で正常動作を確認。 「1」の toiawase.html にて、charsetをUTF-8にする必要があり 下記のように charset のみ書き換えました。 <meta http-equiv="Content-Type" content="text/html"; charset="UTF-8" /> すると以下の不具合が発生しました  ・上記の「2」の部分ですでに入力したデータのみ文字化けを起こす。  ・当然、「3」にての送信でも入力データのみ文字化けして送られる。 よって、「2」のmail_kakunin.php にも以下の分を追加しました <meta http-equiv="Content-Type" content="text/html"; charset="UTF-8" /> すると以下のような不具合が発生しました  ・上記の「2」の部分で入力データは mb_convert_encoding() で UTF-8   に変換し、文字化けしませんが、今度はPHPのコーディングでべた書きの2バイト   コードが文字化けを起こす。 HTML上で、UTF-8 の漢字コード指定なので、PHPにべた書きの2バイトコードも UTF-8 で出力する必要があるのですが、やり方がわかりません。 ご存知の方教えていただけると助かります。

    • ベストアンサー
    • PHP
  • ファイルを開かずに、そのファイルのエンコード方式を変える方法はないでし

    ファイルを開かずに、そのファイルのエンコード方式を変える方法はないでしょうか? s-jisや、EUCなどのhtml/css/phpファイルが大量にあります。これを全てutf-8にしたいのですが、 どうすれよいでしょうか? メタタグ等は、 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> と一括置換すればよいのですが、 肝心のファイルは、一つ一つ開いていって、ひとつひとつutf-8で保存する方法しか知りません。 ファイルが大量にあるので、大変手間です。 もっと効率的にファイルのエンコード方式を変える方法はないのでしょうか? 誰か知っていたら、教えてください。

  • AndroidでのHTMLファイルの読み込み

    PC上で作成したHTMLファイルをAndroid(2.3)のスマートフォンで読みたいと思い、作成したファイルをスマートフォンのSDカード内に移動しました。 スマートフォン上でそのファイルを開けたのは良いのですが、リンクで別のHTMLファイルに移動しようとするとエラーが出て正常に動作しませんでした。 どうすれば読めるようになるのでしょうか? 以下に、そのHTMLファイルのソースを掲載しますので、よろしくお願いします。 このHTMLファイルから別のHTMLファイル(page1.html)に移動したいと考えています。 --------------------------------------------- <html> <head> <title>test page</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> </head> <body> <a href="page1.html">移動</a> </body> </html> --------------------------------------------- こちらが移動先のHTMLファイル(page1.html)のソースです。 --------------------------------------------- <html> <head> <title>My Page</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> </head> <body> 移動完了 </body> </html> --------------------------------------------- エラーメッセージは画像ファイルの通りです。

  • image1.phpを表示するHTMLでイメージが表示されません。

    image1.phpを表示するHTMLでイメージが表示されません。 <!-- form1.html --> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html lang="ja"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>form1</title> </head> <body> ※イメージを表示<br> <img src='image1.php' /> </body> </html> <!-- image1.php--> <?php chdir('data'); $path = 'image1.jpg'; $rpath = realpath($path); $size = filesize($rpath); $file = @fopen($rpath,'rb') or exit('ファイルが開けません。'); $img = fread($file,$size); fclose($file); header('Content-type','image/jpeg'); echo $img; ?> イメージとしてデータを送信するPHPと、そのPHPをイメージとして表示するHTMLです。 HTMLからアクセスしてイメージを表示させたいのですが、どのようにしたらいいか教えてください。

    • ベストアンサー
    • PHP
  • Shift-jisで記述したHTMLをutf-8で保存するにはどうした

    Shift-jisで記述したHTMLをutf-8で保存するにはどうしたらいいですか? 使ってるソフトはez-htmlとFFFTPです。 InternetExprolerでは表示できますが、 他のブラウザでは文字化けしてしまい困っています。 <head>タグの中に、 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> と入力はしてあります。 でも、中身はShift-jisのままでダメだそうで。 ネットで解決策をいろいろ探しましたが、 何が何だかさっぱり分かりませんでした。 こうすればいいというアドバイスをお願いします。

    • ベストアンサー
    • HTML
  • PHPについて教えてください

    下記のindex.htmlとcheck.phpを別々にURLに入力すると正しく表示されるのですが 横の送信ボタンを押したときにcheck.phpにジャンプしてくれません どうしてでしょうか? index.html <DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>PHP基礎</title> </head> <body> <from method="post" action="check.php"> <input name="nickname" type="text" style="width:100px"> <input type="submit" value="送信"> </from> </body> </html> check.php <DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>PHP基礎</title> </head> <body> <?php print'ようこそ'; ?> </body> </html>

    • 締切済み
    • PHP
  • PHPをhtmlに読み込んだファイルが文字化けする

    お世話になります。 通常のHTMLファイルにWordPressを生成し、WPでブログを書いたファイル(/wp/index.php)を読み込んで、表示させたいと考えております。その件に関してはなんとか表示できるようになったのですが、私が作ったhtmlファイル(/wp/index.html)はShift-JISで、 WordPressが吐き出してるブログ(/wp/index.php)はUTF-8で文字コードが違うので、ブログ部分のみ文字化けが起こります。それで上記のように/wp/index.htmlのcharsetをShift-JISからUTF-8へ変更しました。 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> ところが「テキストコーディングエラー」とポップアップが起こりました。「設定したテキストエンコーディングで保存済みですが、テキスト中のcharset設定と一致していないので、ブラウザ等で表示すると文字化けする可能性があります」とのことです。その結果、今度はブログ部分がちゃんと表示され、HTMLで作成した部分は文字化けするようになりました。これはPHPの問題ではないかもしれませんが、原因がどうにも分かりません。もしかしたら初歩的な質問をしているかもしれませんが、よければ教えていただけないでしょうか。

    • ベストアンサー
    • PHP
  • phpファイルのヘッダ

    phpのファイルからヘッダの部分を消したいのですが、 //****************************** // print XML serialize //****************************** // header("Content-Type: application/xml; charset=UTF-8"); // print $resp->serialize(); // printing XML という部分と //ヘッダフッタ $smarty->assign("S_header", DF_header); $smarty->assign("S_footer", DF_footer); $smarty->display("../templates/ensen_list.tpl"); この二箇所しかありません。 このどちらかをいじればヘッダは消せるのでしょうか?