ไม่ได้ประกาศการเข้ารหัสอักขระของเอกสาร HTML


163

เมื่อฉันคลิกที่ปุ่มส่งแบบฟอร์มข้อความแสดงข้อผิดพลาดต่อไปนี้จะปรากฏขึ้น:

"การเข้ารหัสอักขระของเอกสาร HTML ไม่ถูกประกาศเอกสารจะแสดงผลด้วยข้อความที่อ่านไม่ออกในการกำหนดค่าเบราว์เซอร์บางอย่างหากเอกสารมีอักขระจากนอกช่วง US-ASCII การเข้ารหัสอักขระของหน้าจะต้องถูกประกาศในเอกสารหรือ ในโปรโตคอลการถ่ายโอน "

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

ฉันไม่รู้ว่ารหัสปัญหาของฉันอยู่ที่ไหน โปรดช่วยฉันด้วย



ลองตั้งชื่อหน้าคุณ .html เพื่อ .php: ->insert.html insert.phpและตั้งชื่อไฟล์การจัดการแบบฟอร์มของคุณ ( insert.php) ไปยังinsert_action.phpหรืออะไรบางอย่าง (ไม่แน่ใจว่าช่วยได้หรือไม่ แต่ฉันจะไม่มั่วhtmlและphpหน้าเว็บเมื่อใช้ PHP)
ZZ-bb

โอ้ที่รักนี่เป็นคำถามเก่า ไม่ได้สังเกตวันที่เนื่องจากคำตอบใหม่ ...
ZZ-bb

@xing เบราว์เซอร์ใดที่คุณใช้อยู่
Pacerier

คำตอบ:


279

เพิ่มสิ่งนี้เป็นบรรทัดแรกในส่วน HEAD ของเทมเพลต HTML ของคุณ

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

6
บรรทัดที่สองสร้างข้อผิดพลาดนี้ในเครื่องมือตรวจสอบ W3 สำหรับ docytype html:Bad value encoding for attribute http-equiv on element meta.
yitwail

3
<meta http-equiv = "ประเภทเนื้อหา" เนื้อหา = "ข้อความ / html; charset = ISO-8859-1">
Scott Stensland

2
@ yitwail ฉันเพิ่งยกเว้นบรรทัดที่สองและทำงานได้
Evorlor

1
ฉันใช้ Firefox ฉันพิมพ์ทั้งสองอย่างแล้วตอนนี้ก็ไม่เห็นอะไรเลย ฉันควรทำอย่างไรดี? ขอบคุณล่วงหน้า
Hendry Tanaka

1
พวกเราน้อยมากที่พิมพ์ไฟล์ข้อความใน UTF-8 ไฟล์ข้อความส่วนใหญ่อยู่ในรูปแบบ ISO-8859-1 ดูและดูว่าเครื่องมือแก้ไขข้อความของคุณผลิตอะไรและถ้าเป็น ISO-8859-1 ให้ใช้ <meta http-equiv = "Content-Type" content = "text / html; charset = ISO-8859-1">
AgilePro

47

ฉันมีปัญหาเดียวกันกับสถานการณ์พื้นฐานที่สุดและปัญหาของฉันได้รับการแก้ไขด้วยการแทรกเมตานี้ในหัว:

<meta charset="UTF-8">

การเข้ารหัสอักขระ (ซึ่งจริงๆแล้วเป็น UTF-8) ของเอกสาร html ไม่ได้ถูกประกาศไว้


18

เมื่อคุณโพสต์เบราว์เซอร์จะแสดงผลเพียง$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>

1
ขอบคุณฉันมีปัญหาที่คล้ายกันและคำตอบของคุณช่วยแก้ไข (ฉันหายไป meta http-equiv ... บรรทัด)
David Miani

7

ฉันมีปัญหาเดียวกันเมื่อฉันเรียกใช้แบบฟอร์มใบสมัครของฉันใน 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>


3

คุณต้องเปลี่ยนไฟล์จาก. html เป็น. php

และเพิ่มบรรทัดต่อไปนี้

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

1

หน้าเริ่มต้นของคุณคือหน้า 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>';

 ?>

มันแปลกมาก คุณสามารถโพสต์รหัสของคุณเป็นส่วนเพิ่มเติมของคำถามเดิมได้หรือไม่
gkrogers
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.