2012-08-16 1 views
106

宣言されていなかったが表示されます。私は、フォームのボタンを次のエラーメッセージを送信するをクリックすると、HTMLドキュメントの文字エンコーディングが

「HTMLドキュメントの文字エンコーディングが宣言されていない文書が文字化けしてレンダリングされます。ドキュメントにUS-ASCII範囲外の文字が含まれている場合、一部のブラウザ設定ではページの文字エンコーディングをドキュメントまたは転送プロトコルで宣言する必要があります。

insert.html:

<!DOCTYPE html PUBLIC"-//W3C//DTD XHTML 1.0 Strict//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="content-type" content="text/html; charset=utf-8" /> 
<title>insert page</title></head> 
<body> 
<h1> Insert Page </h1> 
    <form action="insert.php" method="post" enctype="application/x-www-form-urlencoded" > 
    <p>Title:<input type="text" name="title" size="40"/></p> 
    <p>Price:<input type= "text" name="price" size="40" /></p> 
    <p><input type="submit" value="Insert" /> 
    <input type="reset" value="Reset" /></p> 
    </form>  
</body> 
</html> 

がinsert.php:

<?php 
    $title = $_POST["title"]; 
    $price = $_POST["price"]; 

    echo $title; 
?> 

私は私のコードでは、問題がどこにあるか知りません。私を助けてください。

+2

いくつかの良い読書この次の行を追加します。[HTMLの文字エンコーディングを宣言する](http://www.w3.org/International/questions/qa-html-encoding-declarations) –

+0

.htmlページを.php: 'insert.html' - >' insert.php'に命名してください。そしてフォーム処理ファイル( 'insert.php')の名前を' insert_action.php'か何かにします。 (PHPの使用時に役立つかどうかわかりませんが、PHPを使うときは 'html'と' php'のページを混ぜません。) –

+0

これは古い質問でした。新しい回答のために日付を気付かなかった... –

答えて

15

投稿すると、ブラウザは$titleしか出力しません。あなたのHTMLタグとdoctypeはすべて消えます。あなたの最初のページには、フォームを含む完全なHTMLページ、送信ボタンをクリックしたときにinsert.phpために掲載されている内容が、insert.phpある

<!DOCTYPE html PUBLIC"-//W3C//DTD XHTML 1.0 Strict//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="content-type" content="text/html; charset=utf-8" /> 
<title>insert page</title></head> 
<body> 
<?php 

    $title = $_POST["title"]; 
    $price = $_POST["price"]; 

    echo $title; 


?> 
</body> 
</html> 
+0

私はインクルードしていますが何も表示していません – xing

+1

ありがとう、私は同様の問題を抱えていて、あなたの答えはそれを修正するのを助けました(私はmeta http-equiv ...ラインを見逃していました)。 –

1

:あなたはあなたのinsert.phpファイルのものを含める必要がありフォームの内容を処理し、データベースに追加するか、新しいページに出力するなど、フォームの内容を処理する必要があります。あなたの現在のinsert.phpはtitleフィールドの内容を出力するだけで、ブラウザはそれをHTMLページとして解釈しようとします。そして、HTMLは有効なHTMLではないので、明らかに失敗します(つまり、 'HTML'タグなど)。

あなたのinsert.phpは、必要なHTMLを出力し、どこかにフォームデータを挿入する必要があります。例えば

<?php 

    $title = $_POST["title"]; 
    $price = $_POST["price"]; 

    echo '<html xmlns="http://www.w3.org/1999/xhtml">'; 
    echo '<head>'; 
    echo '<meta http-equiv="content-type" content="text/html; charset=utf-8" />'; 
    echo '<title>'; 
    echo $title; 
    echo '</title>'; 
    echo '</head>'; 
    echo '<body>'; 
    echo 'Hello, world.'; 
    echo '</body>'; 

?> 
+1

このコードで試しましたが、出力として 'echo'と表示されます。 – xing

+0

それは奇妙です。元の質問に加えてコードを投稿できますか? – gkrogers

189

は、私が最も基本的な状況と同じ問題を抱えていると私の問題はで解決したあなたのHTMLテンプレート

<meta content="text/html;charset=utf-8" http-equiv="Content-Type"> 
<meta content="utf-8" http-equiv="encoding"> 
+5

2行目でdocytype html: のW3バリデーターでこのエラーが生成されました。「要素メタの属性http-equivの値が不正です」 – yitwail

+3

+2

@yitwail 2行目を除いて、うまくいきました。 – Evorlor

22

のHEADセクションの最初の行としてこれを追加

<meta charset="UTF-8"> 

文字エンコーディング(実際はUTF-8です) html文書が宣言されていません

2

ファイルを.htmlから.phpに変更する必要があります。

header('Content-Type: text/html; charset=utf-8'); 
関連する問題