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 любой другой строки, например,
,
такой проблемы не наблюдается.
Справка: BOM сделан, чтобы такое недоразумение, как notepad.exe понимало, что файл записан в utf-8 кодировке. Эта сигнатура вообще не нужна. Такие сигнатуры применяются только для utf-16 кодировок, потому что там есть какие-то две разновидности.
Вопрос: как отучить php писать сигнатуры utf-8.
Здавствуйте!
Я делаю сайт на 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.