16

非常に奇妙なエラーが発生するファイルがあります。エラーは次のとおりです。

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>

これは、amazonPricingMWS.phpを追加し、タイトルにmws.phpが含まれるページにリダイレクトすることを除いて、エラー(index.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でこのエラーが発生する理由を誰かに説明してもらえますか?

4

2 に答える 2

24

ブラウザがファイルの最初の1024バイトのエンコーディング形式を予期しているため、エラーが発生します。最初のケースでは、インクルードされたファイルによって出力されているコンテンツがある場合があります。

ブラウザは、ファイルの最初の1024バイトをバッファリングして、文字エンコードをチェックするようになりました。エンコーディングの説明が最初の1024バイトで検出されない場合、この警告が表示されます。

あなたの場合、他のファイルが含まれる前に、phpヘッダーを使用してコンテンツタイプを指定できます。

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

詳細については、次をお読みください:http: //gtmetrix.com/specify-a-character-set-early.html

于 2012-07-24T15:25:10.443 に答える
10

私も同様の問題を抱えていましたが、この背後にある正確な理由は、私が追加するためにフォローするのを逃したことでした

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

後のヘッドタグで

<meta content="text/html;charset=utf-8" http-equiv="Content-Type">
于 2012-10-10T13:02:20.713 に答える