Кодировка символов, не объявленная в 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?
Ответы
Ответ 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">