Die Zeichenkodierung des HTML-Dokuments wurde nicht deklariert

162

Wenn ich auf die Schaltfläche "Senden" meines Formulars klicke, wird die folgende Fehlermeldung angezeigt:

"Die Zeichenkodierung des HTML-Dokuments wurde nicht deklariert. In einigen Browserkonfigurationen wird das Dokument mit verstümmeltem Text gerendert, wenn das Dokument Zeichen außerhalb des US-ASCII-Bereichs enthält. Die Zeichenkodierung der Seite muss im Dokument oder deklariert werden im Übertragungsprotokoll. "

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

Ich weiß nicht, wo das Problem in meinem Code liegt. Bitte hilf mir.

xing
quelle
3
Einige gute Lektüre: Deklarieren von Zeichencodierungen in HTML
Pekka
Versuchen Sie, Ihre .html-Seite in .php zu benennen: insert.html-> insert.php. Und benennen Sie Ihre Formularbearbeitungsdatei ( insert.php) insert_action.phpoder so. (Nicht sicher , ob es hilft , aber ich würde nicht mischen htmlund phpSeiten , wenn PHP.)
ZZ-bb
Oh je, das war eine alte Frage. Ich habe die Daten wegen der neuen Antwort nicht bemerkt ...
ZZ-bb
@xing, welchen Browser benutzt du?
Pacerier

Antworten:

278

Fügen Sie dies als erste Zeile im Abschnitt HEAD Ihrer HTML-Vorlage hinzu

<meta content="text/html;charset=utf-8" http-equiv="Content-Type">
<meta content="utf-8" http-equiv="encoding">
Krishan Gopal
quelle
6
Die zweite Zeile erzeugt diesen Fehler im W3-Validator für Docytype HTML:Bad value encoding for attribute http-equiv on element meta.
Yitwail
3
<meta http-equiv = "Inhaltstyp" content = "text / html; charset = ISO-8859-1">
Scott Stensland
2
@yitwail Ich habe gerade die zweite Zeile ausgeschlossen, und es hat funktioniert.
Evorlor
1
Ich benutze Firefox. Ich habe beide getippt und jetzt zeigt es mir nichts auf der Seite. Was soll ich machen? Vielen Dank im Voraus
Hendry Tanaka
1
Sehr wenige von uns geben Textdateien in UTF-8 ein. Die meisten Textdateien haben das Format ISO-8859-1. Schauen Sie nach, was Ihr Texteditor produziert. Wenn es sich um ISO-8859-1 handelt, verwenden Sie <meta http-equiv = "Content-Type" content = "text / html; charset = ISO-8859-1">
AgilePro
46

Ich habe das gleiche Problem mit der grundlegendsten Situation und mein Problem wurde durch Einfügen dieses Metas in den Kopf gelöst:

<meta charset="UTF-8">

Die Zeichenkodierung (die eigentlich UTF-8 ist) des HTML-Dokuments wurde nicht deklariert

Dragan Sekuloski
quelle
18

Nun, wenn Sie posten, gibt der Browser nur aus $title- alle Ihre HTML-Tags und Doctype verschwinden. Sie müssen diese in Ihre insert.phpDatei aufnehmen:

<!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>
AlienWebguy
quelle
1
Vielen Dank, ich hatte ein ähnliches Problem und Ihre Antwort hat dazu beigetragen, es zu beheben (mir fehlte die Meta-http-äquiv ... -Zeile).
David Miani
7

Ich hatte das gleiche Problem, als ich meine Formularanwendung in Firefox ausführte. Das Hinzufügen <meta charset="utf-8"/>des HTML-Codes löste mein Problem in 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>

Ishara Amarasekera
quelle
3

Sie müssen die Datei von .html in .php ändern.

und fügen Sie diese folgende Zeile hinzu

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

Ihre erste Seite ist eine vollständige HTML-Seite, die ein Formular enthält, dessen Inhalt in insert.php veröffentlicht wird, wenn auf die Schaltfläche zum Senden geklickt wird. Insert.php muss jedoch den Inhalt des Formulars verarbeiten und etwas damit tun, z. B. sie zu einem hinzufügen Datenbank oder geben Sie sie auf einer neuen Seite aus. Ihre aktuelle insert.php gibt nur den Inhalt des Titelfelds aus, daher versucht Ihr Browser, dies als HTML-Seite zu interpretieren, und schlägt offensichtlich fehl, weil es kein gültiges HTML ist (dh es ist nicht in einem 'HTML' enthalten. Tag usw.).

Ihre insert.php muss den erforderlichen HTML-Code ausgeben und die Formulardaten dort irgendwo einfügen.

Beispielsweise:

<?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
quelle
Das ist seltsam. Können Sie Ihren Code als Ergänzung zur ursprünglichen Frage veröffentlichen?
Gkrogers