Всё чаще на самых разных сайтах встречаю вот такую картинку:

Ошибка на sove2u.ru

Это сайт 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.com

Блог 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. Вопрос в том, почему она появляется в середине документа?!



3 Responses to “Очень распространенная ошибка”  

  1. Byte Order Mark появляется т.к. шаблоны состоят из нескольких PHP-файлов.
    Файлы в кодировке UFT-8 BOM (напр. если редактировались блокнотом windows).
    BOM стоит до <?php, поэтому воспринимается как html.

    Исправить можно либо создав новый файл в UFT-8 и скопировав туда текст старого.
    Или в WaterProof PHPEdit переключить кодировку на UTF-8-без-BOM.

  2. 2 Ugnich Anton

    2Mr.KTO: такое не только на стыке шаблонов встречается.
    Интересно было бы узнать универсальное решение, в PHP есть такое?

  3. Можно готовить документ в cp1251, а потом разом конвертировать в UTF-8. Я так для WAP сайтов делал


Leave a Reply