HTML belgesinin karakter kodlaması bildirilmedi


163

Formumun gönder düğmesini tıkladığımda aşağıdaki hata mesajı görünüyor:

"HTML belgesinin karakter kodlaması bildirilmedi. Belge US-ASCII aralığının dışından karakterler içeriyorsa, belge bazı tarayıcı yapılandırmalarında bozuk metinle işlenecektir. Sayfanın karakter kodlaması belgede bildirilmelidir veya aktarma protokolünde. "

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

Kodumdaki sorunun nerede olduğunu bilmiyorum. Lütfen bana yardım et.



.Html sayfasını .php: insert.html-> olarak adlandırmayı deneyin insert.php. Form işleme dosyanızı ( insert.php) olarak insert_action.phpveya başka bir adla adlandırın . (Eğer yardımcı olur emin değilim ama PHP kullanırken karıştırmak htmlve phpsayfaları.)
ZZ-bb

Ah canım, bu eski bir soruydu. Yeni cevap nedeniyle tarihleri ​​fark
etmedim

@xing, Hangi tarayıcıyı kullanıyorsunuz?
Pacerier

Yanıtlar:


279

Bunu HTML şablonunuzun HEAD bölümüne ilk satır olarak ekleyin

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

6
ikinci satır, docytype html için W3 doğrulayıcısında bu hatayı üretir:Bad value encoding for attribute http-equiv on element meta.
yitwail 28:13

3
<meta http-equiv = "İçerik Türü" content = "text / html; karakter kümesi = ISO-8859-1">
Scott Stensland

2
@yitwail İkinci satırı hariç tuttum ve işe yaradı.
Evorlor

1
Firefox kullanıyorum. İkisini de yazdım ve şimdi bana sayfada hiçbir şey göstermiyor. Ne yapmalıyım? Şimdiden teşekkürler
Hendry Tanaka

1
Çok azımız UTF-8'de metin dosyaları yazıyoruz. Çoğu metin dosyası ISO-8859-1 biçimindedir. Metin düzenleyicinizin ne ürettiğine bakın ve bakın ve ISO-8859-1 ise <meta http-equiv = "Content-Type" content = "text / html; charset = ISO-8859-1"> kullanın
AgilePro

47

En temel durum ile aynı sorunum var ve sorunum bu meta kafasına ekleme ile çözüldü:

<meta charset="UTF-8">

html belgesinin karakter kodlaması (aslında UTF-8'dir) bildirilmedi


18

Gönderdiğinizde, tarayıcı yalnızca çıktı verir $title- tüm HTML etiketleriniz ve doküman türünüz kaybolur. Bunları insert.phpdosyanıza eklemeniz gerekir :

<!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
Teşekkürler, benzer bir sorun yaşıyordum ve cevabınız düzeltmeye yardımcı oldu (meta http-equiv ... satırını kaçırıyordum).
David Miani

7

Firefox'ta form uygulamamı çalıştırdığımda da aynı sorunu yaşadım. <meta charset="utf-8"/>Html kodunu eklemek Firefox'taki sorunumu çözdü.

<!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

Dosyayı .html'den .php'ye değiştirmeniz gerekir.

ve şu satırı ekleyin

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

1

İlk sayfanız, gönder düğmesi tıklandığında içeriği insert.php dosyasına gönderilen bir form içeren eksiksiz bir HTML sayfasıdır, ancak insert.php'nin, formun içeriğini işlemesi ve onlarla bir şey eklemesi gerekir; veya yeni bir sayfaya çıktılar. Geçerli insert.php'niz yalnızca başlık alanının içeriğini çıkarır, bu nedenle tarayıcınız bunu bir HTML sayfası olarak yorumlamaya çalışır ve geçerli HTML olmadığı için başarısız olur (yani bir 'HTML' içinde bulunmaz) etiketi vb.).

İnsert.php dosyanızın gerekli HTML çıktısını alması ve form verilerini buraya bir yere eklemesi gerekir.

Örneğin:

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

 ?>

Bu garip. Kodunuzu orijinal soruya ek olarak gönderebilir misiniz?
gkrogers
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.