Pengkodean karakter dokumen HTML tidak dideklarasikan

163

Ketika saya mengklik tombol kirim formulir saya, pesan kesalahan berikut muncul:

"Pengkodean karakter dari dokumen HTML tidak dideklarasikan. Dokumen tersebut akan dirender dengan teks yang kacau di beberapa konfigurasi browser jika dokumen tersebut mengandung karakter dari luar rentang US-ASCII. Pengkodean karakter dari halaman harus dinyatakan dalam dokumen atau dalam protokol transfer. "

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

Saya tidak tahu di mana masalah dalam kode saya. Tolong bantu aku.

xing
sumber
3
Beberapa bacaan yang bagus: Deklarasikan pengkodean karakter dalam HTML
Pekka
Coba beri nama Anda .html halaman ke .php: insert.html-> insert.php. Dan beri nama file penanganan formulir Anda ( insert.php) ke insert_action.phpatau sesuatu. (Tidak yakin apakah itu membantu tapi saya tidak akan mencampur htmldan phphalaman saat menggunakan PHP.)
ZZ-bb
Oh sayang, ini pertanyaan lama. Tidak memperhatikan tanggal karena jawaban baru ...
ZZ-bb
@xing, browser mana yang Anda gunakan?
Pacerier

Jawaban:

279

Tambahkan ini sebagai baris pertama di bagian KEPALA template HTML Anda

<meta content="text/html;charset=utf-8" http-equiv="Content-Type">
<meta content="utf-8" http-equiv="encoding">
Krishan Gopal
sumber
6
baris kedua menghasilkan kesalahan ini dalam validator W3 untuk docytype html:Bad value encoding for attribute http-equiv on element meta.
yitwail
3
<meta http-equiv = "Tipe-Konten" content = "teks / html; charset = ISO-8859-1">
Scott Stensland
2
@yitwail Saya baru saja mengecualikan baris kedua, dan berhasil.
Evorlor
1
Saya menggunakan firefox. Saya mengetik keduanya dan sekarang tidak menunjukkan apa pun di halaman. Apa yang harus saya lakukan? Terima kasih sebelumnya
Hendry Tanaka
1
Sangat sedikit dari kita mengetik file teks di UTF-8. Sebagian besar file teks dalam format ISO-8859-1. Lihat dan lihat apa yang diproduksi oleh editor teks Anda, dan jika itu adalah ISO-8859-1 maka gunakan <meta http-equiv = "Content-Type" content = "text / html; charset = ISO-8859-1">
AgilePro
47

Saya memiliki masalah yang sama dengan situasi paling mendasar dan masalah saya diselesaikan dengan memasukkan meta ini di kepala:

<meta charset="UTF-8">

pengkodean karakter (yang sebenarnya UTF-8) dari dokumen html tidak dideklarasikan

Dragan Sekuloski
sumber
18

Nah saat Anda memposting, browser hanya menampilkan $title- semua tag HTML dan doctype Anda hilang. Anda harus memasukkan yang ada di insert.phpfile Anda :

<!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
sumber
1
Terima kasih, saya mengalami masalah yang sama, dan jawaban Anda membantu memperbaikinya (saya kehilangan garis meta http-equiv ...).
David Miani
7

Saya memiliki masalah yang sama ketika saya menjalankan aplikasi formulir saya di Firefox. Menambahkan <meta charset="utf-8"/>kode html memecahkan masalah saya di 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
sumber
3

Anda harus mengubah file dari .html ke .php.

dan tambahkan baris berikut ini

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

Halaman awal Anda adalah halaman HTML lengkap yang berisi formulir, yang isinya diposting ke insert.php ketika tombol kirim diklik, tetapi insert.php perlu memproses konten formulir dan melakukan sesuatu dengannya, seperti menambahkannya ke database, atau output ke halaman baru. Insert.php Anda saat ini hanya menampilkan konten dari bidang judul, jadi browser Anda mencoba menafsirkannya sebagai halaman HTML, dan gagal, jelas, karena itu bukan HTML yang valid (yaitu tidak terkandung dalam 'HTML' tag, dll.).

Insert.php Anda perlu menampilkan HTML yang diperlukan, dan menyisipkan data formulir di sana di suatu tempat.

Sebagai contoh:

<?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
sumber
Itu aneh. Bisakah Anda memposting kode Anda sebagai tambahan untuk pertanyaan awal?
gkrogers