Символ #65279 — проблема верстальщика
В роли символа №65279 —  , который и был изначально в названии поста, но и там он умудрился “исчезнуть”.
Символ  обладает рядом очень весёлых свойств, которые каждый встретивший его верстальщик непременно запомнит, если не провтыкает ))
Всё началось с того, что я писал дизайн под свой новый проект. Для красоты и юзабилити надо было, что бы сайт “прилипал” к верхнему краю браузера, но он не лип, ни в какую. Не буду описывать как я эти 2 недели его пытался отловить, перейду сразу к тому что он такое есть и что в этим делать.
Символ  не что иное, как BOM (Byte Order Mark) который находится в начале файла с кодировкой UTF-8, и возможно некоторых других юникодных кодировок. Служит указателем порядка байтов и может указывать, какой кодировкой Unicode закодирован текст. Кодировка Unicode может использовать 16-разрядные или 32-разрядные числа и приложение должно знать, как дальше с ними поступать. Поэтому потребность в маркере последовательности байтов возникает при обмене документами.
Как особенность, в файле он не видим, места не занимает вообще (но выделить его всё же можно), так же, его не видно при включении показа непечатаемых символов.
Во всех браузерах, кроме Оперы, действует как перенос строки. Опера же, на него не реагирует. При чтении этого файла, очень вероятно, что первым символом будет прочитан не текст, а BOM.
Решение уже очевидно — нужно избавится от BOM. Я избавился от него пересохранив необходимые файлы с помощью Notepad++ в UTF-8 без BOM.
Скрипт PHP
Если у Вас в проекте много файлов, в которых есть BOM, тогда можно процесс удаления символа 
автоматизировать. Есть скрипт, который перебирает рекурсивно все файлы в заданом каталоге и под каталогах и убирает BOM.
<?php // Tell me the root folder path. // You can also try this one // $HOME = $_SERVER["DOCUMENT_ROOT"]; // Or this // dirname(__FILE__) $HOME = dirname(__FILE__); // Is this a Windows host ? If it is, change this line to $WIN = 1; $WIN = 0; // Recursive finder function RecursiveFolder($sHOME) { global $BOMBED, $WIN; $win32 = ($WIN == 1)? "\\" : "/"; $folder = dir($sHOME); $foundfolders = array(); while ($file = $folder->read()) { if($file != "." and $file != "..") { if(filetype($sHOME . $win32 . $file) == "dir"){ $foundfolders[count($foundfolders)] = $sHOME . $win32 . $file; }else{ $content = file_get_contents($sHOME . $win32 . $file); $BOM = SearchBOM($content); if($BOM){ $BOMBED[count($BOMBED)] = $sHOME . $win32 . $file; // Remove first three chars from the file $content = substr($content,3); // Write to file file_put_contents($sHOME . $win32 . $file, $content); } } } } $folder->close(); if(count($foundfolders)>0){ foreach($foundfolders as $folder){ RecursiveFolder($folder, $win32); } } } // Searching for BOM in files function SearchBOM($string){ if(substr($string,0,3) == pack("CCC",0xef,0xbb,0xbf)) return true; return false; } ?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>UTF8 BOM FINDER and REMOVER</title> <style> body { font-size: 10px; font-family: Arial, Helvetica, sans-serif; background: #FFF; color: #000; } .FOUND { color: #F30; font-size: 14px; font-weight: bold; } </style> </head> <body> <?php $BOMBED = array(); RecursiveFolder($HOME); echo '<h2>These files had UTF8 BOM, but i cleaned them:</h2><p class="FOUND">'; foreach($BOMBED as $utf){ echo $utf ."<br />\n"; } echo '</p>'; ?> </body> </html>
ВНИМАНИЕ Перед запуском скрипта, сделайте резервную копию файлов!
Создайте файл BOM.php, поместите данный код туда. Загрузите файл в корневую папку и запустите его. Скрипт определит, в каких файлах есть BOM символ и удалит его от туда.
Дмитрий
15:48 02.07.2013Мужик, огромное спасибо, я себе этой гадостью весь день мозг тр**ал!!