2011-11-08 2 views
8

블로그가 있습니다 (WordPress 기반). 그리고 내 페이지의 유효성 검사기 중 하나를 통해 유효성 검사를 시도하십시오. 첫 번째 오류는 다음과 같습니다 또한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 체크 "탭을 클릭하십시오. 그러나!!

  1. HTML 코드의이 줄

    내 워드 프레스 테마 파일 header.php에서 왔습니다.
  2. 이 파일을 내 hoster에서 로컬 HDD에 다운로드합니다. 내가 (단지 고급 텍스트 편집기) RJ 한테 문자에 header.php을 열 때
  3. header.php의 첫 번째 줄은 말 <!DOCTYPE html><!-- HTML 5 -->
  4. 입니다 : header.php 현재 인코딩은 UFT-8 입니다 without (!) 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했다 :

  • jquery.query.js (사이트의 루트에)

    • WP-config.php 파일을 (에 폴더를 포함)
    • CYR - 투 - lat.php (플러그에 테마 루트 폴더에
    • footer.php()

    그리고) 폴더에 나는에 강요했다 "UFT-8 BOM이없는이"비 "를 제거하기 위해 이러한 4 개 파일의 모든 모든을 다시 저장 -space characters "유효성 검증 오류. 내가 이것을했을 때 (파일을 다시 저장하십시오) - 오류가 사라졌습니다.

  • +1

    감사합니다,이 오류는 나를 미치게했습니다! –

    +0

    고맙습니다. 유효성 검사 오류 이외에도 빈 페이지 공간 탐색 메뉴 바로 위에 거대한 빈 공간이 생겨서 빈 공간 문제의 원인을 식별하기 위해 며칠 동안 저를 괴롭혔습니다 ... Smultron.app에서 Mac 및 UTF-8 BOM 옵션을 제거하고 내 테마 파일을 다시 업로드하여 해결했습니다! –