Очень распространенная ошибка
Всё чаще на самых разных сайтах встречаю вот такую картинку:

Это сайт sove2u.ru в браузере Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.1) Gecko/20061208 Firefox/2.0.0.1. Судя по коду страницы, сайт сделан на основе Pligg, кодировка UTF-8.
Значок «FEFF» – это ошибка Unicode, в этом месте страницы находится байт, который в UTF-8 вообще не должен встречаться.
Вот ещё один пример:

Блог KMiNT21, на базе популярного WordPress.
Эта ошибка возникает, когда код страницы попеременно выводится то сгенерированный скриптами, то из шаблонных надписей. Я не работаю с PHP, может кто-то в комментариях подскажет, как сделать, чтобы оно генерировало нормальный Unicode?!
Если у вас нет Linux
, то проверить страницу на ошибочные байты Unicode можно с помощью старого доброго валидатора от w3.org: «Sorry, I am unable to validate this document because on line 296 it contained one or more bytes that I cannot interpret as utf-8«.
Дополнение: чаще всего встречаются «ошибочные» байты EF BB BF. Это Byte-order mark — метка, которая указывает на то, что текст закодирован в UTF-8. Вопрос в том, почему она появляется в середине документа?!
Filed under: Технологии | 3 Comments

Byte Order Mark появляется т.к. шаблоны состоят из нескольких PHP-файлов.
Файлы в кодировке UFT-8 BOM (напр. если редактировались блокнотом windows).
BOM стоит до <?php, поэтому воспринимается как html.
Исправить можно либо создав новый файл в UFT-8 и скопировав туда текст старого.
Или в WaterProof PHPEdit переключить кодировку на UTF-8-без-BOM.
2Mr.KTO: такое не только на стыке шаблонов встречается.
Интересно было бы узнать универсальное решение, в PHP есть такое?
Можно готовить документ в cp1251, а потом разом конвертировать в UTF-8. Я так для WAP сайтов делал