La codifica dei caratteri del documento HTML non è stata dichiarata


163

Quando faccio clic sul pulsante di invio del mio modulo, viene visualizzato il seguente messaggio di errore:

"La codifica dei caratteri del documento HTML non è stata dichiarata. Il documento verrà visualizzato con testo confuso in alcune configurazioni del browser se il documento contiene caratteri al di fuori dell'intervallo US-ASCII. La codifica dei caratteri della pagina deve essere dichiarata nel documento o nel protocollo di trasferimento ".

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

Non so dove sia il problema nel mio codice. Mi aiuti per favore.



Prova a nominare la tua pagina .html in .php: insert.html-> insert.php. E dai un nome al file di gestione dei moduli ( insert.php) insert_action.phpo qualcosa del genere. (Non sono sicuro se aiuta, ma non mescolerei htmle phppagine quando uso PHP.)
ZZ-bb

Oh cara, questa era una vecchia domanda. Non ho notato le date a causa della nuova risposta ...
ZZ-bb

@xing, quale browser stai usando?
Pacerier,

Risposte:


279

Aggiungi questo come prima riga nella sezione HEAD del tuo modello HTML

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

6
la seconda riga produce questo errore nel validatore W3 per html docytype:Bad value encoding for attribute http-equiv on element meta.
yitwail,

3
<meta http-equiv = "Content-Type" content = "text / html; charset = ISO-8859-1">
Scott Stensland,

2
@yitwail Ho appena escluso la seconda riga e ha funzionato.
Evorlor,

1
Sto usando Firefox. Ho digitato entrambi e ora non mi mostra nulla sulla pagina. Cosa dovrei fare? Grazie in anticipo
Hendry Tanaka il

1
Pochissimi di noi digitano file di testo in UTF-8. La maggior parte dei file di testo sono in formato ISO-8859-1. Guarda e guarda cosa sta producendo il tuo editor di testo e, se è ISO-8859-1, usa <meta http-equiv = "Content-Type" content = "text / html; charset = ISO-8859-1">
AgilePro

47

Ho lo stesso problema con la situazione più elementare e il mio problema è stato risolto inserendo questo meta nella testa:

<meta charset="UTF-8">

la codifica dei caratteri (che in realtà è UTF-8) del documento HTML non è stata dichiarata


18

Bene quando pubblichi, il browser emette solo $title- tutti i tuoi tag HTML e doctype scompaiono. Devi includere quelli nel tuo insert.phpfile:

<!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
Grazie, avevo un problema simile e la tua risposta mi ha aiutato a risolverlo (mi mancava la linea meta http-equiv ...).
David Miani,

7

Ho avuto lo stesso problema quando ho eseguito l'applicazione per moduli in Firefox. L'aggiunta <meta charset="utf-8"/>del codice HTML ha risolto il mio problema 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>


3

Devi cambiare il file da .html a .php.

e aggiungi questa riga seguente

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

1

La tua pagina iniziale è una pagina HTML completa contenente un modulo, i cui contenuti vengono pubblicati su insert.php quando si fa clic sul pulsante di invio, ma insert.php deve elaborare i contenuti del modulo e fare qualcosa con essi, come aggiungerli a un database o inviarli a una nuova pagina. Il tuo attuale insert.php genera solo il contenuto del campo del titolo, quindi il tuo browser cerca di interpretarlo come una pagina HTML e fallisce, ovviamente, perché non è un HTML valido (cioè non è contenuto in un 'HTML' tag, ecc.).

Il tuo insert.php deve generare l'HTML necessario e inserire i dati del modulo da qualche parte.

Per esempio:

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

 ?>

È strano. Puoi pubblicare il tuo codice come aggiunta alla domanda originale?
Gkrogers,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.