Кодування символів документа HTML не було оголошено


163

Коли я натискаю кнопку подання форми, з'являється таке повідомлення про помилку:

Msgstr "Кодування символів документа HTML не було оголошено. Документ відображатиметься зі скребленим текстом у деяких конфігураціях браузера, якщо документ містить символи поза межами діапазону США-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 = "Content-Type" content = "text / html; charset = ISO-8859-1">
Скотт Стенсленд

2
@yitwail Я просто виключив другий рядок, і він спрацював.
Еворлор

1
Я використовую firefox. Я набрав їх обох і тепер це нічого не показує на сторінці. Що я повинен зробити? Дякую заздалегідь
Хендрі Танака

1
Дуже мало хто з нас набирає текстові файли в UTF-8. Більшість текстових файлів у форматі ISO-8859-1. Подивіться і подивіться, що створює ваш текстовий редактор, і якщо це ISO-8859-1, тоді використовуйте <meta http-equiv = "Content-Type" content = "text / html; charset = ISO-8859-1">
AgilePro

46

У мене така ж проблема з найпростішою ситуацією, і моя проблема була вирішена із вставкою цього мета в голову:

<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
Дякую, у мене була подібна проблема, і ваша відповідь допомогла її виправити (мені не вистачало мета http-equiv ... рядок).
Девід Міані

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 після натискання кнопки надсилання, але вставку.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
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.