htmlを含まないphpファイルにもHTMLヘッダー内にエンコード形式を記述する必要はあるのでしょうか?

解決済みの質問

htmlを含まないphpファイルにもHTMLヘッダー内にエンコード形式を記述する必要はあるのでしょうか?

私はフォームにデータを入力するファイル(enter.html)、それをチェックするファイル(check.php)及びデータをメールで送信するファイル(mail.php)を分離しています。

これらのファイルの内、ブラウザーにファイル内のHTMLコードが出力されるのは、データを入力するファイル(enter.html)だけです。

入力されたデータをチェックするファイル(check.php)及びデータをメールで送信するファイル(mail.php)は、phpのechoを使用して、入力エラーがあったり、メールが送信された場合にその旨のメッセージをブラウザーに表示しますが、HTMLは含みません。

そのため、データを入力するファイル(enter.html)には、<meta http-equiv="Content-Type" content="text/html; charset=utf-8">とエンコード形式(UTF-8)をHTMLヘッダー内に記述しているのですが、htmlを含まないphpファイル(check.php及びenter.html)にも<meta http-equiv="Content-Type" content="text/html; charset=utf-8">などのようにHTMLヘッダー内にエンコード形式を記述する必要はあるのでしょうか?

よろしくお願いします。

キャサリン

投稿日時 - 2007-09-16 15:48:27

QNo.3349981

困ってます

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

結論から言うと、書く必要があります。

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

投稿日時 - 2007-09-16 20:56:00

お礼

utano_mさん

ご回答ありがとうございました。
良く理解できました。

キャサリン

投稿日時 - 2007-09-17 13:33:07

ANo.1

0人が「このQ&Aが役に立った」と投票しています

あわせてチェックしたい
  • meta、http-equiv等について ...
  • META http-equiv content のあたりでjavascriptエラーが出る ...
  • charset=UTF-8 にすると文字化けしちゃいます! ...
PR

OKWaveのオススメ

教えて弁護士さん!

お金の悩みQ&A特集はこちら