2011-11-08 126 views
8

私はブログを持っています(ワードプレスベース)。私のページのw3cバリデーターで検証してみてください。最初のエラーは、次のとおりです。また、HTML検証エラー:空白文字がDOCTYPEの前に見つかりました

Line 1, Column 1: Non-space characters found without seeing a doctype first. Expected <!DOCTYPE html>. 
<!DOCTYPE html><!-- HTML 5 --> 

、DebugBarは(http://www.my-debugbar.com/wiki/IETester/HomePage)「同意し、私はから同じページを開いたときに<!前に2つ目に見えない文字を表示しますこのツール内の[HTMLチェック]タブをクリックします。しかし!!

  1. HTMLコードのこの行は私のワードプレスのテーマでファイルheader.phpのから来ます。
  2. 私のホストからこのファイルをローカルのHDDにダウンロードします。私は(ちょうど高度なテキストエディタ)RJ尋ねてみた中でheader.phpのを開くと
  3. header.phpのの最初の行は、それが言う<!DOCTYPE html><!-- HTML 5 -->
  4. です:header.phpのの現在のエンコーディングはUFT-8 ですなし(!)BOM。
  5. HEXビューアでheader.phpを開くと、そのバイト0と1は3c、21です - 正確には<!です。

だから、私がこれらの「奇妙な記号」をどこから得るのか、なぜ&だと思うのですか?

+0

ポイント4と5を読むまで、私は答えがかなり単純だと思った。これは面白い。 –

答えて

17

問題の根本が見つかりました。一般的なルールは次のとおりです。

If any(absolutely any!) file that take part in construction of the code of final HTML-page(the one to be sended to client) has encoding with BOM - final HTML-page WILL BE UTF-8-BOM. That is: you whole site should NOT contain even 1 file with BOM.

私の場合、私のサイトを構成する合計1.3Kのファイルがあります。唯一の4ファイルがBOMedた:(フォルダを含めるに)

  • (サイトのルートにある)のwp-config.phpの
  • jquery.query.js
  • をシル・ツー・lat.php(プラグインでフォルダ内の)テーマルートフォルダ内
  • footer.php()

そして私はノン」を取り除くために、「UFT-8 BOMなし」としてこれらの4つのファイルのへの再保存し、すべての、すべての強制されましたスペース文字 "検証エラーです。私がこれをしたとき(ファイルを再保存する) - エラーはなくなりました。

+1

ありがとう、このエラーは私を狂って運転していた! –

+0

ありがとうございます。妥当性チェックのエラーを超えて、私はワードプレスのサイトのナビゲーションメニューのすぐ上に大きな空白スペースを確保していましたが、空白の問題の原因を特定しようと数日間苦労しました...そして、Smultron.appのエンコーディングをMac用に変更しました。 UTF-8 BOMオプションを削除し、テーマのファイルを再アップロードして解決しました! –

関連する問題