Ошибка проверки HTML: символы без пробелов, найденные до DOCTYPE

у меня есть блог(на основе WordPress). И попробуйте проверить валидатором w3c одну из моих страниц. Первая ошибка:

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-кода происходит из файла заголовок.в PHP в моей теме wordpress.
  2. я загружаю этот файл с моего хостер для моего локального HDD.
  3. первая строка заголовок.в PHP is <!DOCTYPE html><!-- HTML 5 -->
  4. когда я открываю заголовок.в PHP в RJ TextEd (просто расширенный текстовый редактор) он говорит: текущая кодировка для заголовок.в PHP is UFT-8 без(!) ВЕДОМОСТЬ МАТЕРИАЛОВ.
  5. когда я открываю заголовка.php в HEX-viewer я вижу, что байт 0 и 1 - это 3c, 21-так что это точно <!.

Итак, все рассмотрено, почему и где я получаю это "странные символы" от?

1 ответов


Я нашел корень проблемы. Общее правило:

Если любой(абсолютно любой!) файл, который принимает участие в строительстве код окончательной HTML-страницы (той, которая будет отправлена клиенту) имеет кодировку с BOM-final HTML-страница будет UTF-8-BOM. То есть: вы весь сайт должен!--4-->не содержат даже 1 файл С BOM.

в моем случае у меня есть всего 1.3 K файлов, которые составляют мой сайт. Было только 4 файла BOMed:

  • wp-config.php (в корне сайта)
  • С помощью jQuery.запрос.js (в папке include)
  • - Кир-ко-лат.php (в папке плагина)
  • нижний колонтитул.php (в корневой папке темы)

и я был вынужден повторно сохранить все эти 4 файла как "UFT-8 без BOM", чтобы избавиться от ошибки проверки" не-пробелов". Когда я это сделал (повторное сохранение файлов) - ошибка исчезла.