utf-8, Byte Order Mark и мой сайт.

  • Автор темы LongMan
  • Дата начала

LongMan

Guest
utf-8, Byte Order Mark и мой сайт.

Здавствуйте!
Я делаю сайт на apache+php+postgresql.

Условия:
В Postgre все данные хранятся в utf-8.
Файл сценария в utf-8.
Результирующая страница имеет строку <meta http-equiv="Content-Type" content="text/html; charset=utf-8">.

Что происходит:
После обработки нескольких запросов к бд у мня есть строка, которая содержит html код. Если ее записать в файл все будет как и надо - html страница.
Я же делаю echo, как того и следовало ожидать. PHP почему-то добавляет BOM или utf-8 сигнатуру EF BB BF в начало файла, да притом не одну, а целых четыре.
Эксплорер проглатывает первую сигнатуру, на остальных спотыкается. Другие, например Firefox, обрабатывают все.
Смотрите сами: http://home.tltsu.ru/~longman/

Комментарий: если делать echo любой другой строки, например,
PHP:
echo "экзистенциализм";
,
такой проблемы не наблюдается.

Справка: BOM сделан, чтобы такое недоразумение, как notepad.exe понимало, что файл записан в utf-8 кодировке. Эта сигнатура вообще не нужна. Такие сигнатуры применяются только для utf-16 кодировок, потому что там есть какие-то две разновидности.

Вопрос: как отучить php писать сигнатуры utf-8.
 

tony2001

TeaM PHPClub
>PHP почему-то добавляет BOM или utf-8 сигнатуру EF BB BF в начало файла, да
> притом не одну, а целых четыре.

PHP ничего сам магически не добавляет.
BOM добавляется твоим редактором, более конкретно - Notepad'ом.

>Вопрос: как отучить php писать сигнатуры utf-8.
Узнать у MS как отключить этот идиотизм в Notepad.
 

LongMan

Guest
Повторяю.
После обработки нескольких запросов к бд у мня есть строка, которая содержит html код. Если ее записать в файл все будет как и надо - html страница. Без BOM.

Мой редактор эту чушь не пишет.
Notepad никогда не использовал.
 

tony2001

TeaM PHPClub
>Если ее записать в файл все будет как и надо - html страница. Без BOM.

значит, PHP ничего не добавляет, как видишь.
 

LongMan

Guest
При записи в файл ничего, согласен.
Меня echo волнует.
То что гадит апач или постгрес исключено.
 

tony2001

TeaM PHPClub
если он там есть, значит он там есть.
могу тебя заверить, что PHP ничего не делает с выводимыми данными, если его не просят.
 

LongMan

Guest
Мне вот и интересно - возможно ли такое, что он настроен так, что пишет эти сигнатуры?
 

SiMM

Новичок
Ищи BOM в своих скриптах, а не в том, что PHP выводит в файл.
 

camka

не самка
Смотри подключаемые скрипты (include). Наверняка в них-то и поселились ВОМы.
 

LongMan

Guest
Уважаемые camka, SiMM и tony2001.
Проблема действительно состояла в инклуженных файлах. Эта мысль мне пришла сегодня в душе.
Большое вам спасибо.

С уважением, Longan.
 
Сверху