La codificación de caracteres del documento HTML no se declaró

163

Cuando hago clic en el botón de envío de mi formulario, aparece el siguiente mensaje de error:

"La codificación de caracteres del documento HTML no se declaró. El documento se representará con texto ilegible en algunas configuraciones del navegador si el documento contiene caracteres fuera del rango US-ASCII. La codificación de caracteres de la página debe declararse en el documento o en el protocolo de transferencia ".

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

No sé dónde está el problema en mi código. Por favor, ayúdame.

xing
fuente
3
Algunas buenas lecturas: Declarando codificaciones de caracteres en HTML
Pekka
Intenta nombrar tu página .html como .php: insert.html-> insert.php. Y asigne un nombre a su archivo de manejo de formularios ( insert.php) insert_action.phpo algo. (No estoy seguro si ayuda pero no se mezclaría htmly phppáginas al utilizar PHP.)
ZZ-bb
Oh querido, esta era una vieja pregunta. No noté las fechas debido a la nueva respuesta ...
ZZ-bb
@xing, ¿qué navegador estás usando?
Pacerier

Respuestas:

279

Agregue esto como primera línea en la sección HEAD de su plantilla HTML

<meta content="text/html;charset=utf-8" http-equiv="Content-Type">
<meta content="utf-8" http-equiv="encoding">
Krishan Gopal
fuente
66
la segunda línea produce este error en el validador W3 para 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 Acabo de excluir la segunda línea, y funcionó.
Evorlor
1
Estoy usando Firefox Escribí ambos y ahora no me muestra nada en la página. ¿Qué tengo que hacer? Gracias de antemano
Hendry Tanaka
1
Muy pocos de nosotros escribimos archivos de texto en UTF-8. La mayoría de los archivos de texto están en formato ISO-8859-1. Mire y vea qué produce su editor de texto, y si es ISO-8859-1, entonces use <meta http-equiv = "Content-Type" content = "text / html; charset = ISO-8859-1">
AgilePro
47

Tengo el mismo problema con la situación más básica y mi problema se resolvió insertando este meta en la cabeza:

<meta charset="UTF-8">

no se declaró la codificación de caracteres (que en realidad es UTF-8) del documento html

Dragan Sekuloski
fuente
18

Bueno, cuando $titlepublicas , el navegador solo genera : todas tus etiquetas HTML y doctype desaparecen. Debe incluirlos en su insert.phparchivo:

<!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
fuente
1
Gracias, estaba teniendo un problema similar, y su respuesta ayudó a solucionarlo (me faltaba la línea meta http-equiv ...).
David Miani
7

Tuve el mismo problema cuando ejecuté mi aplicación de formulario en Firefox. Agregar <meta charset="utf-8"/>el código html resolvió mi problema en 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
fuente
3

Tiene que cambiar el archivo de .html a .php.

y agregue esta línea siguiente

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

Su página inicial es una página HTML completa que contiene un formulario, cuyo contenido se publica en insert.php cuando se hace clic en el botón Enviar, pero insert.php necesita procesar el contenido del formulario y hacer algo con ellos, como agregarlos a un base de datos o enviarlos a una nueva página. Su insert.php actual solo genera el contenido del campo de título, por lo que su navegador intenta interpretarlo como una página HTML y falla, obviamente, porque no es HTML válido (es decir, no está contenido en un 'HTML' etiqueta, etc.).

Su insert.php necesita generar el HTML necesario e insertar los datos del formulario allí en alguna parte.

Por ejemplo:

<?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
fuente
Eso es extraño. ¿Puedes publicar tu código como una adición a la pregunta original?
gkrogers