HTMLドキュメントの文字エンコードは宣言されていません


162

フォームの送信ボタンをクリックすると、次のエラーメッセージが表示されます。

「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;
 ?>

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



.htmlページに.phpという名前を付けてみてください:insert.html-> insert.php。フォーム処理ファイル(insert.php)の名前をに付けますinsert_action.php。(それが役立つかどうかはわかりませんがhtmlphpPHPを使用するときにページを混ぜることはしません。)
ZZ-bb

ああ、これは古い質問でした。新しい回答のため、日付に気づかなかった...
ZZ-bb

@xing、どのブラウザーを使用していますか?
Pacerier 2015年

回答:


278

これをHTMLテンプレートのHEADセクションの最初の行として追加します

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

6
2行目はdocytype HTMLのためW3バリデータでは、このエラーを生成しますBad value encoding for attribute http-equiv on element meta.
yitwail

3
<meta http-equiv = "Content-Type" content = "text / html; charset = ISO-8859-1">
スコットステンスランド2014年

2
@yitwail 2行目を除外したところ、うまくいきました。
Evorlor 2014年

1
Firefoxを使用しています。両方を入力したところ、ページには何も表示されません。私は何をすべきか?よろしく
Hendry Tanaka

1
テキストファイルをUTF-8で入力する人はほとんどいません。ほとんどのテキストファイルはISO-8859-1形式です。テキストエディタが生成しているものを見て、それがISO-8859-1の場合は、<meta http-equiv = "Content-Type" content = "text / html; charset = ISO-8859-1">
AgileProを使用してください。

46

私は最も基本的な状況で同じ問題を抱えており、私の問題はこのメタを頭に挿入することで解決されました:

<meta charset="UTF-8">

HTMLドキュメントの文字エンコーディング(実際にはUTF-8)が宣言されていません


18

投稿すると、ブラウザは出力のみを$title行います-HTMLタグとdoctypeはすべてなくなります。これらを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>

1
ありがとう、私は同様の問題を抱えていました、そしてあなたの答えはそれを修正するのを助けました(私はメタhttp-equiv ...行が欠けていました)。
David Miani、2012

7

Firefoxでフォームアプリケーションを実行したときにも同じ問題が発生しました。<meta charset="utf-8"/>HTMLコードを追加すると、Firefoxでの問題が解決しました。

<!DOCTYPE html>
<html>

<head>
  <meta charset="utf-8" />
  <title>Voice clip upload</title>
  <script src="voiceclip.js"></script>
</head>

<body>
  <h2>Upload Voice Clip</h2>
  <form id="upload_form" enctype="multipart/form-data" method="post">
    <input type="file" name="file1" id="file1" onchange="uploadFile()"><br>
    <progress id="progressBar" value="0" max="100" style="width:300px;"></progress>
  </form>
</body>

</html>


3

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

次の行を追加します

header('Content-Type: text/html; charset=utf-8');

1

最初のページはフォームを含む完全なHTMLページであり、そのコンテンツは送信ボタンがクリックされたときにinsert.phpに投稿されますが、insert.phpはフォームのコンテンツを処理し、フォームに追加するなど、何かを行う必要がありますデータベース、またはそれらを新しいページに出力します。現在のinsert.phpはタイトルフィールドのコンテンツを出力するだけなので、ブラウザーはそれを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>';

 ?>

それは変です。元の質問への追加としてコードを投稿できますか?
gkrogers 2012
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.