Le codage de caractères du document HTML n'a pas été déclaré


163

Lorsque je clique sur le bouton d'envoi de mon formulaire, le message d'erreur suivant apparaît:

"Le codage des caractères du document HTML n'a pas été déclaré. Le document sera rendu avec du texte déformé dans certaines configurations de navigateur si le document contient des caractères en dehors de la plage US-ASCII. Le codage des caractères de la page doit être déclaré dans le document ou dans le protocole de transfert. "

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

Je ne sais pas où est le problème dans mon code. Aidez-moi, s'il vous plaît.



Essayez de nommer votre page .html en .php: insert.html-> insert.php. Et nommez votre fichier de gestion de formulaire ( insert.php) insert_action.phpou quelque chose comme ça. (Je ne sais pas si cela aide, mais je ne voudrais pas mélanger htmlet phppages lors de l'utilisation de PHP.)
ZZ-bb

Oh là là, c'était une vieille question. Je n'ai pas remarqué les dates à cause de la nouvelle réponse ...
ZZ-bb

@xing, quel navigateur utilisez-vous?
Pacerier

Réponses:


279

Ajoutez ceci en première ligne dans la section HEAD de votre modèle HTML

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

6
la deuxième ligne produit cette erreur dans le validateur W3 pour docytype html: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 J'ai juste exclu la deuxième ligne, et cela a fonctionné.
Evorlor

1
J'utilise Firefox. Je les ai tapés tous les deux et maintenant il ne me montre rien sur la page. Que devrais-je faire? Merci d'avance
Hendry Tanaka

1
Très peu d'entre nous saisissent des fichiers texte en UTF-8. La plupart des fichiers texte sont au format ISO-8859-1. Regardez et voyez ce que produit votre éditeur de texte, et si c'est ISO-8859-1, utilisez <meta http-equiv = "Content-Type" content = "text / html; charset = ISO-8859-1">
AgilePro

47

J'ai le même problème avec la situation la plus élémentaire et mon problème a été résolu en insérant cette méta dans la tête:

<meta charset="UTF-8">

le codage de caractères (qui est en fait UTF-8) du document html n'a pas été déclaré


18

Eh bien, lorsque vous publiez, le navigateur affiche uniquement $title- toutes vos balises HTML et doctype disparaissent. Vous devez les inclure dans votre insert.phpfichier:

<!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
Merci, j'avais un problème similaire, et votre réponse a aidé à le résoudre (il me manquait la ligne meta http-equiv ...).
David Miani

7

J'ai eu le même problème lorsque j'ai exécuté mon application de formulaire dans Firefox. L'ajout <meta charset="utf-8"/>du code html a résolu mon problème dans 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

Vous devez changer le fichier de .html en .php.

et ajoutez cette ligne suivante

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

1

Votre page initiale est une page HTML complète contenant un formulaire, dont le contenu est publié dans insert.php lorsque le bouton d'envoi est cliqué, mais insert.php doit traiter le contenu du formulaire et faire quelque chose avec lui, comme l'ajouter à un base de données, ou les afficher sur une nouvelle page. Votre insert.php actuel affiche simplement le contenu du champ de titre, donc votre navigateur essaie de l'interpréter comme une page HTML, et échoue, évidemment, car ce n'est pas du HTML valide (c'est-à-dire qu'il n'est pas contenu dans un 'HTML' tag, etc.).

Votre insert.php doit générer le code HTML nécessaire et insérer les données du formulaire quelque part.

Par exemple:

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

 ?>

C'est étrange. Pouvez-vous publier votre code en complément de la question initiale?
gkrogers
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.