web-dev-qa-db-ja.com

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

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

129
xing

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

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

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

<meta charset="UTF-8">

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

30

投稿すると、ブラウザは$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>
17
AlienWebguy

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

次の行を追加してください

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

Firefoxでフォームアプリケーションを実行したときにも同じ問題がありました。 HTMLコードに<meta charset="utf-8"/>を追加することで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>
2

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