Сначала заметил, что вверху страницы строка пустая появилась. Дальше больше: все хэдеры из переехали в
, если смотреть через FireBug. Плюс символ №65279 появился. Ломал голову реально минут 30 над проблемой :D
Раньше, помнится, когда ток начинал верстать, тоже столкнулся с этой проблемой.
Символ этот не что иное, как BOM (Byte Order Mark) который находится в начале файла с кодировкой UTF-8, и возможно некоторых других юникодных кодировок. Используется для индикации порядка байтов. Ну, чтоб показать 16-битные или 32-разрядных числа используются.
Вообще, забавная штука. Открывая файл текстовый, вы этот символ не увидите, даже если он есть.
Как исправить: нужно избавится от BOM. В том же Dreamweaver’у пересохранение без BOM ничего не даёт почему-то, символ остаётся. А вот пересохранив файл через Notepad++ в UTF-8 без BOM проблема решается.
спасибо тебе друг!пол дня мучался над сайтом друпаловским…пришлось пересохранять page.tpl.php твоим методом….
Спасибо, Вам! тоже обнаружил Firebug’ом этот символ. Сайт на друпале. Пересохранил все tpl.php шаблоны, и все стало сразу нормально!
Рад, что помогло)
А если не помогает пере сохранение файла в notepad++?
Там иногда и при сохранении глюки бывают. После того, как сохраните в формате без BOM, то откройте файл в HEX редакторе и посмотрите, есть ли там вначале этот символ. Если нет, то с ЭТИМ файлом всё в порядке.
Но, возможно, вы в этом файле другие подключали? include директивы и прочие. Надо во всех файлах этот символ убрать.
разобрался.
в HEX-режимне стояло что-то невнятно перед самим
<?php...
.а вот с первого раза простое преобразование в utf без bom не помогло.
спасибо за информацию)разобрался в чем моя проблема)
Не за что)
Тоже как-то боролся с этой заразой, и посколько проект был большой понадобилось автоматизировать процесс поиска.
Результат:
$path[] = '/path/for/project/root/*';
echo '';
while(count($path) != 0)
{
$v = array_shift($path);
foreach(glob($v) as $item)
{
if (is_dir($item))
{
$path[] = $item . '/*';
}
elseif (is_file($item))
{
if (utf8_bom_detect ($item))
{
echo $item;
echo '-------->BOM!';
}
echo PHP_EOL;
}
}
}
echo '';
function utf8_bom_detect ($filename) {
$file = @fopen($filename, "r");
$bom = fread($file, 3);
if ($bom != b"\xEF\xBB\xBF")
{
return false;
}
else
{
return true;
}
}
В path[] пишете адрес корневой папки проекта с «/*» в конце.
Запускаете — получаете список испорченных файлов.
Успехов =).
В echo »; сожрался тег pre
Огромное спасибо, дружище! Все спецсимволы перебрала, не нашла там даже упоминания про
Даже и не знаю, что делали бы без тебя!
!!!!! Спасибо огроменное товарисч! Мозг уже расплавился с этой проблемой…..