Mã hóa ký tự của tài liệu HTML không được khai báo


162

Khi tôi nhấp vào nút gửi biểu mẫu của mình, thông báo lỗi sau sẽ xuất hiện:

"Mã hóa ký tự của tài liệu HTML không được khai báo. Tài liệu sẽ hiển thị với văn bản bị cắt xén trong một số cấu hình trình duyệt nếu tài liệu chứa các ký tự bên ngoài phạm vi US-ASCII. Mã hóa ký tự của trang phải được khai báo trong tài liệu hoặc trong giao thức chuyển tiền. "

chèn.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>

chèn.php:

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

  echo $title;
 ?>

Tôi không biết vấn đề ở đâu trong mã của tôi. Làm ơn giúp tôi.



Hãy thử đặt tên trang .html của bạn thành .php: insert.html-> insert.php. Và đặt tên tệp xử lý biểu mẫu của bạn ( insert.php) đến insert_action.phphoặc một cái gì đó. (Không chắc chắn nếu nó giúp nhưng tôi sẽ không trộn htmlphptrang khi sử dụng PHP.)
ZZ-bb

Trời ơi, đây là một câu hỏi cũ. Không để ý ngày tháng vì câu trả lời mới ...
ZZ-bb

@xing, bạn đang sử dụng trình duyệt nào?
Pacerier 13/03/2015

Câu trả lời:


278

Thêm dòng này dưới dạng dòng đầu tiên trong phần CHÍNH của mẫu HTML của bạn

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

6
dòng thứ hai tạo ra lỗi này trong trình xác nhận W3 cho html docytype:Bad value encoding for attribute http-equiv on element meta.
yitwail

3
<meta http-Equiv = "Loại nội dung" content = "text / html; charset = ISO-8859-1">
Scott Stensland

2
@yitwail Tôi chỉ loại trừ dòng thứ hai, và nó đã hoạt động.
Evorlor

1
Tôi đang sử dụng firefox. Tôi đã gõ cả hai và bây giờ nó không hiển thị gì trên trang. Tôi nên làm gì? Cảm ơn trước
Hendry Tanaka

1
Rất ít người trong chúng ta gõ các tệp văn bản trong UTF-8. Hầu hết các tệp văn bản có định dạng ISO-8859-1. Nhìn và xem trình soạn thảo văn bản của bạn đang tạo ra những gì và nếu đó là ISO-8859-1 thì hãy sử dụng <meta http-Equiv = "Content-Type" content = "text / html; charset = ISO-8859-1">
AgilePro

46

Tôi có cùng một vấn đề với tình huống cơ bản nhất và vấn đề của tôi đã được giải quyết bằng cách chèn meta này vào đầu:

<meta charset="UTF-8">

mã hóa ký tự (thực tế là UTF-8) của tài liệu html không được khai báo


18

Vâng, khi bạn đăng bài, trình duyệt chỉ xuất ra $title- tất cả các thẻ và tài liệu HTML của bạn sẽ biến mất. Bạn cần bao gồm những người trong insert.phptập tin của bạn :

<!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
Cảm ơn, tôi đã gặp một vấn đề tương tự và câu trả lời của bạn đã giúp khắc phục nó (tôi đã thiếu dòng meta http-Equiv ...).
David Miani

7

Tôi gặp vấn đề tương tự khi chạy ứng dụng biểu mẫu của mình trong Firefox. Thêm <meta charset="utf-8"/>mã html đã giải quyết vấn đề của tôi trong 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

Bạn phải thay đổi tệp từ .html thành .php.

và thêm dòng sau đây

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

1

Trang ban đầu của bạn là một trang HTML hoàn chỉnh chứa một biểu mẫu, nội dung được đăng lên insert.php khi nhấp vào nút gửi, nhưng insert.php cần xử lý nội dung của biểu mẫu và làm gì đó với chúng, như thêm chúng vào cơ sở dữ liệu, hoặc xuất chúng sang một trang mới. Chèn.php hiện tại của bạn chỉ xuất nội dung của trường tiêu đề, vì vậy trình duyệt của bạn cố gắng diễn giải đó là trang HTML và rõ ràng là không thành công vì HTML không hợp lệ (nghĩa là nó không có trong 'HTML' thẻ, v.v.).

Insert.php của bạn cần xuất HTML cần thiết và chèn dữ liệu biểu mẫu vào đó ở đâu đó.

Ví dụ:

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

 ?>

Thật ki quặc. Bạn có thể gửi mã của bạn như là một bổ sung cho câu hỏi ban đầu?
gkrogers
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.