225

当我单击表单的提交按钮时,会出现以下错误消息:

未声明 HTML 文档的字符编码。如果文档包含 US-ASCII 范围之外的字符,则文档将在某些浏览器配置中呈现乱码。页面的字符编码必须在文档或传输协议中声明。

插入.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>

插入.php:

<?php
    $title = $_POST["title"];
    $price = $_POST["price"];

    echo $title;
?>

我不知道我的代码中的问题在哪里。请帮我。

4

6 回答 6

352

将此添加为 HTML 模板的 HEAD 部分的第一行

<meta content="text/html;charset=utf-8" http-equiv="Content-Type">
<meta content="utf-8" http-equiv="encoding">
于 2012-10-10T12:58:18.780 回答
75

我在最基本的情况下遇到了同样的问题,我的问题通过将这个标签插入到文档的头部来解决:

<meta charset="utf-8">

未声明 html 文档的字符编码(实际上是 UTF-8)。

更多关于它这里这里

于 2015-09-27T07:08:36.977 回答
26

当我在 Firefox 中运行表单应用程序时,我遇到了同样的问题。添加<meta charset="utf-8"/>html 代码解决了我在 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>

于 2019-02-24T06:34:17.530 回答
21

好吧,当您发布时,浏览器只会输出$title- 您所有的 HTML 标记和文档类型都会消失。您需要在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>
于 2012-08-16T22:23:36.470 回答
4

您必须将文件从 .html 更改为 .php。

并添加以下行

header('Content-Type: text/html; charset=utf-8');
于 2017-03-05T03:09:21.360 回答
2

您的初始页面是一个包含表单的完整 HTML 页面,当单击提交按钮时,其内容会发布到 insert.php,但 insert.php 需要处理表单的内容并对它们进行处理,例如将它们添加到数据库,或将它们输出到新页面。您当前的 insert.php 仅输出标题字段的内容,因此您的浏览器尝试将其解释为 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>';

 ?>
于 2012-08-16T22:54:00.800 回答