2011-11-08 46 views
8

我有一個博客(基於WordPress的)。並嘗試通過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)同意並<!之前顯示兩個看不見的字符,當我從打開同一個頁面「 HTML Check「標籤。但!!

  1. 這行HTML代碼在我的wordpress主題來自文件的header.php
  2. 我從我的主機下載這個文件到我的本地硬盤。
  3. 的header.php的第一行是<!DOCTYPE html><!-- HTML 5 -->
  4. 當我在發短信RJ(只是先進的文本編輯器)打開的header.php它說:當前編碼的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(在包括文件夾)
  • CYR到lat.php(在插件在文件夾中)
  • footer.php(在主題根文件夾)

,我被迫重新保存每一個和所有這些4個文件爲「UFT-8無BOM」擺脫非」的空格字符「驗證錯誤。當我這樣做(重新保存文件) - 錯誤消失了。

+1

謝謝,這個錯誤讓我瘋狂! –

+0

謝謝。除了驗證錯誤之外,我在我的WordPress網站導航菜單上方得到了一個巨大的空白空間,這真的讓我爲了確定是什麼導致空白問題而奮鬥了幾天......然後我改變了Mac的Smultron.app中的編碼,刪除了UTF-8 BOM選項,重新上傳了我的主題文件,並且解決了! –