





AntiBOM
Первое, с чем зачастую сталкиваются те, кто сделал правильный вывод и решился перейти на кодировку utf-8, это отказ работы хидеров.
Они почему то подло и гаденько начинают верещать, что перед ними был осуществлен вывод в поток, хотя тщательный анализ под микроскопом показывает - нет там вывода. И пробелов нет. Ничего нет.
Если внимательно изучить ошибку, то становится ясно - ругается он на первую строчку индекса
(output started at Z:\home\site.ru\www\index.php:1)
С уверенностью 99,99% можно констатировать - это BOM (byte order mark)
Это такая маркировка файлов с кодировками UTF.
Чесно говоря я не встречал ситуации, где эта маркировка была бы полезной, если используется UTF-8. Для UTF-16LE и UTF-16BE возможно, но для восьмерки один вред. Как говорится - хотели как лучше, получилось как всегда.
Так вот, это ни что иное, как три байта (в нашем случае EF BB BF), с которых начинается файл. А сервер воспринимает их как вывод и начинает материться.
Как с этим бороться.
Во первых - перенастроить свой редактор. Нужно выбрать формат UTF-8 without BOM, что обозначает utf-8 без BOM
Ну а во втроых нужно удалить эти три байта из файлов, которые вцепились в них мертвой хваткой. Просто пересохранить в новом формате не всегда выходит.
Для этого можно воспользоваться утилиткой, которую мы разработали специально для таких ситуаций.
Первое, с чем зачастую сталкиваются те, кто сделал правильный вывод и решился перейти на кодировку utf-8, это отказ работы хидеров.
1 2 |
|
Они почему то подло и гаденько начинают верещать, что перед ними был осуществлен вывод в поток, хотя тщательный анализ под микроскопом показывает - нет там вывода. И пробелов нет. Ничего нет.
Если внимательно изучить ошибку, то становится ясно - ругается он на первую строчку индекса
(output started at Z:\home\site.ru\www\index.php:1)
С уверенностью 99,99% можно констатировать - это BOM (byte order mark)
Это такая маркировка файлов с кодировками UTF.
Чесно говоря я не встречал ситуации, где эта маркировка была бы полезной, если используется UTF-8. Для UTF-16LE и UTF-16BE возможно, но для восьмерки один вред. Как говорится - хотели как лучше, получилось как всегда.
Так вот, это ни что иное, как три байта (в нашем случае EF BB BF), с которых начинается файл. А сервер воспринимает их как вывод и начинает материться.
Как с этим бороться.
Во первых - перенастроить свой редактор. Нужно выбрать формат UTF-8 without BOM, что обозначает utf-8 без BOM
Ну а во втроых нужно удалить эти три байта из файлов, которые вцепились в них мертвой хваткой. Просто пересохранить в новом формате не всегда выходит.
Для этого можно воспользоваться утилиткой, которую мы разработали специально для таких ситуаций.
