5

php インクルード関数を使用すると、インクルードは正常に実行されますが、インクルードの出力が出力される前に char も出力されます。char は 16 進値 3F であり、どこから来ているのかわかりませんが、すべてのインクルードで発生します。

最初はファイルのエンコーディングかと思いましたが、問題ないようです。私はそれを実証するためにテストケースを作成しました:(リンクが機能しなくなりましたhttp://driveefficiently.com/testinclude.phpこのファイルは以下のみで構成されています:

<? include("include.inc"); ?>

および include.inc は以下のみで構成されます。

<? echo ("hello, world"); ?> 

それでも、出力は次のとおりです。ランダムな値を持つ char です。私がその起源を知らないのはこの値であり、時々私のサイトを少し台無しにしています。

これがどこから来ているのかについてのアイデアはありますか? 最初はファイルのエンコーディングが関係しているのではないかと思いましたが、問題はないと思います。

4

6 に答える 6

11

表示されているのは、UTF-8 バイト オーダー マークです。

BOM の UTF-8 表現はバイト シーケンス EF BB BF であり、UTF-8 を処理する準備ができていないほとんどのテキスト エディターや Web ブラウザーでは ISO-8859-1 文字として表示されます。

ウィキペディアのバイト オーダー マーク

PHP は、これらの文字を「非表示」にする必要があることを認識せず、通常の文字であるかのようにブラウザーに送信します。それらを取り除くには、先頭の BOM なしでファイルを UTF-8 として保存できる「適切な」テキスト エディターを使用してファイルを開く必要があります。

この問題の詳細については、こちらをご覧ください

于 2008-09-03T13:44:59.447 に答える
3

Web サーバー (またはテキスト エディター) には、ドキュメントにBOMが含まれているようです。サイトのエンコーディングを明示的に Latin-1 に設定した場合を除いて、ブラウザーに不正な文字は表示されません。次に、2 つの (!) UTF-8 BOM が表示されます。

/EDIT: 2 つの BOM があるという事実から、BOM は実際にはエディターによってファイルの先頭に含まれていると結論付けます。どのエディタを使用していますか? Visual Studio を使用している場合は、[ファイル] メニューで [名前を付けて保存] を選択し、[エンコードして保存] ボタンを選択する必要があります。そこで、「BOM なしの UTF-8」などを選択します。

于 2008-09-03T13:41:38.363 に答える
1

Firefox や IE でレンダリングされたページには表示されませんが、IE でソースを表示すると変な文字が表示されます

ここに画像の説明を入力

これは Linux マシン上にありますか? その方法で3Fを取り除くことができるかどうかを確認するために、見つけてvimまたはsedに置き換えていただけますか?

Windows の場合は、メモ帳で include.inc を開いて、変な文字が表示され、削除できるかどうかを確認してください。

また、コードをインクルードからコピーして単独で実行するとどうなるかを知りたいです。

于 2008-09-03T13:36:34.523 に答える
0

hello, worldリンク先のページを見ました。私が見ることができる問題はありません...

Firefox 3.0.1 と Windows XP を使用しています。どのブラウザ/OS を実行していますか? もしかしたらそれが問題かもしれません。

于 2008-09-03T13:25:13.910 に答える
0

文字 3F は実際にクエスチョン マークであり、単に 1 つとして表示されているわけではありません。

Thomas と同じ結果が得られ、疑問符は表示されません。

理論的には、Web プロキシに何らかの問題がある可能性がありますが、PHP マークアップにクエスチョン マークが表示されている可能性があります...おそらく修正されているため、問題は発生していません。

于 2008-09-03T13:30:26.813 に答える
0

また、コードをインクルードからコピーして単独で実行するとどうなるかを知りたいです。

マーク: これは共有ホスティング ソリューション上にあるため、ファイルへのシェル アクセスを取得できません。ただし、ここでわかるように、存在してはならない文字はなく、同じファイルをスクリプトとして実行しても、この文字は生成されません。(共有ホスティング会社は何の助けにもなっておらず、ブラウザの問題であると繰り返し言っています)。

于 2008-09-03T13:45:42.283 に答える