0

私はこの本当に奇妙な問題を抱えています。

「UTF-8」でファイルをインクルードしようとすると、実行時にエラーが発生します。スクリプトは完全に実行され、正しいテキストが返されますが。

(私はini_set('default_charset', 'utf-8');)

この例を見てください。コードは次のようになります。

次のようなコードがある場合:

include_once $fn;
echo json_encode("ALL IS FINE");
die();

ajax応答がそれをどのように解釈するか:(エラーとして、しかし応答テキストはまだ同じであるため、実際には常に正しいテキストであり、スクリプトは完全に実行されます..) ここに画像の説明を入力

そして、次のようなコードがある場合:

echo json_encode("ALL IS FINE");
die();
include_once $fn;

ajax 応答がそれをどのように解釈するか: ここに画像の説明を入力

Notepad ++で「ANSI as UTF-8」を使用すると、エラーを取り除くことができます。これは、基本的にBOMなしのUTF-8を意味します。しかし、私はutf8でそれを持ちたいです。

4

1 に答える 1

1

PHPでBOMを使用してutf8を使用すると、問題が発生するだけです。あなたの場合、実際に ajax 応答で得られるものは次のようになります。

BOM"ALL IS FINE"

BOM は引用符で囲まれていないため、JavaScript は有効な json ではないため、デコードに失敗します。

さらに、一部の最新の php フレームワークを使用すると、BOM で問題が発生します。それらのほとんどは、出力バッファリングを使用してコンテンツを操作しています。この場合の BOM の最も一般的なエラーは次のとおりです。

Warning: Cannot modify header information - headers already sent
于 2013-05-22T20:33:31.957 に答える