У меня есть файл, в который я получаю очень странную ошибку. Ошибка:
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?
Ошибка возникает, потому что браузеры ожидают формат кодирования в первых 1024 байтах файла. Возможно, в первом случае содержимое содержимого выводится с помощью включенных файлов.
Теперь браузеры загружают первые 1024 байта файла, чтобы проверить кодировку символов. Если описание кодирования не встречается в первых 1024 байтах, это предупреждение отображается.
В вашем случае вы можете использовать заголовок php для указания типа содержимого до включения других файлов:
header('Content-type: text/html; charset=utf-8');
Для получения дополнительной информации прочтите следующее: http://gtmetrix.com/specify-a-character-set-early.html
У меня была схожая проблема. Но точной причиной этого было то, что я пропустил следующее, чтобы добавить
<meta content="utf-8" http-equiv="encoding">
в заголовке
<meta content="text/html;charset=utf-8" http-equiv="Content-Type">