Кодировка символов, не объявленная в html документе - программирование
Подтвердить что ты не робот

Кодировка символов, не объявленная в html документе

У меня есть файл, на который я получаю очень странную ошибку. Ошибка:

The character encoding of the HTML document was not declared. 
The document will render with garbled text in some browser configurations if 
the document contains characters from outside the US-ASCII range. 
The character encoding of the page must to be declared in the document or 
in the transfer protocol.

файл, из которого он поступает, является (indexmws.php):

session_start();
if(!isset($_SESSION['validUser']) || $_SESSION['validUser'] !== true){
header('Location: loginmws.php');
}

include_once('db.php');
include_once('amazonmws.php');
include_once('decidemws.php');
include_once('author.php');
include_once('amazonPricingMWS.php');

?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title>Decision Maker</title>

Это точный дубликат файла, который не выдает ошибку (index.php), за исключением добавления amazonPricingMWS.php и перенаправления на страницы с mws.php в заголовке:

session_start();
if(!isset($_SESSION['validUser']) || $_SESSION['validUser'] !== true){
header('Location: login.php');
}

include_once('db.php');
include_once('amazon.php');
include_once('decide.php');
include_once('author.php');

?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title>Decision Maker</title>

может кто-нибудь объяснить мне, почему я получаю эту ошибку в indexmws.php?

4b9b3361

Ответ 1

Ошибка возникает, потому что браузеры ожидают формат кодирования в первых 1024 байтах файла. Возможно, в первом случае содержимое содержимого выводится включенными файлами.

Теперь браузеры загружают первые 1024 байта файла для проверки кодировки символов. Если описание кодирования не встречается в первых 1024 байтах, это предупреждение отображается.

В вашем случае вы можете использовать заголовок php для указания типа содержимого до включения других файлов:

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

Для получения дополнительной информации прочтите следующее: http://gtmetrix.com/specify-a-character-set-early.html

Ответ 2

У меня была схожая проблема. Но точной причиной этого было то, что я пропустил следующее, чтобы добавить

<meta content="utf-8" http-equiv="encoding">

в заголовке заголовка после

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