1

私はphpコードを書くためにnotepad++とutf-8エンコーディングを使用しています。ヘッダーが下に移動するという問題に直面しました。Firebugは後<body>にダブルスペースを表示することを発見したので、空のスペースを削除すると、ヘッダーが彼の場所に設定されます。しかし、「Ctrl + U」を押してHTMLコードを表示すると、すべて問題ないことがわかります。

<!DOCTYPE html>
<html>
  <head>
  </head>
<body>
  <div id="header">
       <div class="container">
      <img alt="" src="/../images/logo.png" class="active">
       </div>
  </div>
</body>
</html>

Encode \ Convert to ANSIの問題を選択した場合の重要なポイントは、消えます。DBはUTF8を使用し、レコードにはキリル文字が含まれているため、ANSIを使用できません。

問題:

<body>

    <div id="header">
4

2 に答える 2

2

16進エディタを使用してファイルを検査します。<body>との間のどこかに、 <div...「見えない」(たとえば、「空白」または「見えない」)文字が存在する必要があります。16進エディタのリストはここにあります。

ただし、この例の場合、最も簡単な解決策は、単にANSI / ASCIIとして保存し、再度開いて、UTF-8として再度保存することです。これにより、非表示の文字が削除されるか、少なくとも再度開いたときに「奇妙な」文字が表示されるはずです。

編集 私はあなたがあなたの質問に貼り付けた問題を見ました。奇妙なものは何も見られないので、コピー/貼り付けによってキャラクターが失われたと思います。 ここに画像の説明を入力してください

0D(と0Aはキャリッジリターン/ラインフィード、または「通常の(ウィンドウ)改行」で20あり、通常のスペースであることに注意してください)


私はちょうど思い出しました:私はjsFiddleからコードをコピーするこの問題を1回か2回見ました; 「フォーマッタ/構文ハイライト」は、不要な文字を追加することがあるようです(または追加されているようです)。たとえば、この質問を参照してください。

また、BOMが問題の原因となることもありますが、BOMがファイルの最初の数バイトであるため、スペースが間<body>にある理由を説明できません(AFAIK) 。<div...BOMを含む複数のPHPファイルを使用して(include()/require()などを使用して)最終出力を作成している場合、これらのファイルの1つに不要な(?)BOMが含まれている可能性があります。

于 2013-03-27T11:30:48.817 に答える
1

UTF-8 without BOMnotepad ++では、 PHPを使用する場合は厳密に使用する必要があります。UTF-8notepad ++では、残念ながら、すべてのPHPソースファイルの前にBOMが追加されることを意味します。

PHPは気付かないようにエンコードしているので、それをエコーされる文字通りのコンテンツとして扱うだけです。headers already sentこれにより、一部のブラウザでエラーやドキュメントがクァークズモードになるなどのあらゆる種類の問題が発生します。

手動でUTF-8 without BOM作成したBOMを削除するよりも、-encodingを使用する方がはるかに簡単です。UTF-8

于 2013-03-27T12:22:16.603 に答える