12

いくつかの頭痛の種の後、私は、セットエンコーディングUTF8(BOM付き)を使用した日食がエラーを引き起こすことを理解しました。インクルードを使用すると、空白が追加され、Webページのヘッダーが本文内でクロムでレンダリングされます。

すなわち。もちろん前後にギャップのないindex.phpで

<?php include_once('header.php'); ?><body>test</body>

そしてheader.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">
<head>
<title>test title</title>
</head>

次に、テストタイトルが本文内に表示されます(ビューソースではなく、Chromeのコンソールに表示されます)。これにより、ページの上部にギャップが生じます。

notepad ++でindex.phpとheader.phpを開き、BOMなしでエンコーディングをUTF8に変更すると、問題が解決します。どうすればEclipseでこれを修正できますか?!notepad ++に切り替えることは望ましくありません。Eclipseの便利な機能が多すぎます(オートコンプリート、自動バージョン管理など)。

私にとっての謎...

4

2 に答える 2

9

Eclipse では、ファイルのエンコーディングを iso に変更し (ファイルを右クリック - > プロパティ)、最初の 3 つの BOM 文字を削除し、ファイルを保存して再度開きます。

于 2015-07-28T07:56:25.537 に答える
7

私の知る限り、ワークスペース (またはファイルの種類) の設定が UTF-8 に設定されている限り、新しいファイルに対して新しい BOM は作成されませんが、古い BOM (他のエディターで作成されたもの) は維持されます。ファイルを開いているエディターに応じて表示されます (PHP エディター、または PHP+HTML エディター)。

ファイルにランダムな BOM がある場合は、チームの誰かがデフォルトで BOM がオンになっている別のエディターを使用している可能性があります (こんにちは、Dreamweaver!)。この人が新しいファイルを作成するたびに、BOM が挿入され、あなたと彼の編集者の両方によって維持されます (ただし、どちらかが削除しても問題ありません)。

あなたが bash に精通している場合は、次のスクリプトを使用して BOM をまとめてプルーニングすることをお勧めします。

sed '1 s/\xEF\xBB\xBF//' < input > output


BOM マジックのソース: http://thegreyblog.blogspot.com/2010/09/shell-script-to-find-and-remove-bom.html

于 2013-03-04T11:07:08.057 に答える