2011-11-08 16 views
8

Tôi có một blog (dựa trên wordpress). Và cố gắng xác thực bằng trình xác thực w3c một trong trang của tôi. Lỗi đầu tiên là:Lỗi xác thực HTML: Các ký tự không dấu cách được tìm thấy trước DOCTYPE

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

Ngoài ra, DebugBar (http://www.my-debugbar.com/wiki/IETester/HomePage) đồng ý và hiển thị hai ký tự vô hình trước <! khi tôi mở cùng một trang từ " Kiểm tra HTML "tab bên trong công cụ này. NHƯNG!!

  1. Dòng mã HTML này có trong tệp header.php trong chủ đề wordpress của tôi.
  2. Tôi tải xuống tệp này từ hoster của mình vào ổ cứng cục bộ của mình.
  3. Dòng đầu tiên của header.php<!DOCTYPE html><!-- HTML 5 -->
  4. Khi tôi mở header.php trong RJ texted (chỉ cần soạn thảo văn bản nâng cao) nó nói: mã hóa hiện tại cho header.php là UFT-8 không có (!) BOM.
  5. Khi tôi mở header.php trong trình xem HEX tôi thấy, byte 0 và 1 đó là 3c, 21 - vì vậy chính xác là <!.

Vì vậy, tất cả những điều được xem xét, tại sao & nơi tôi nhận được những "biểu tượng kỳ lạ" này?

+0

Cho đến khi đọc điểm 4 & 5, tôi nghĩ câu trả lời khá đơn giản. Hay đấy. –

Trả lời

17

Tôi đã tìm thấy gốc của sự cố. Quy tắc chung là:

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.

Trong trường hợp của tôi, tôi có tổng số tệp 1,3K tạo nên trang web của mình. Chỉ có 4 file bị định BOMed:

  • wp-config.php (trong thư mục gốc của trang web)
  • jquery.query.js (trong bao gồm thư mục)
  • Cyr-to-lat.php (trong plug- trong thư mục)
  • footer.php (trong thư mục gốc theme)

và tôi đã buộc phải lưu lại tất cả và tất cả các 4 file như "UFT-8 mà không BOM" để thoát khỏi "Non -ký tự xác thực "không gian". Khi tôi đã làm điều này (lưu lại các tập tin) - lỗi đã biến mất.

+1

Cảm ơn bạn, lỗi này đã khiến tôi phát điên! –

+0

Cảm ơn bạn. Ngoài lỗi xác thực, tôi đã nhận được một khoảng trống lớn ngay trên trình đơn điều hướng trang WordPress của tôi, điều này đã khiến tôi phải vật lộn trong nhiều ngày để xác định nguyên nhân gây ra vấn đề không gian trống ... Sau đó tôi đã thay đổi mã hóa trong Smultron.app cho Mac và đã xóa tùy chọn UTF-8 BOM, tải lên lại các tệp của chủ đề của tôi và nó đã được giải quyết !! –