Заголовок сообщения: php, моя страница и utf-8 сигнатуры Добавлено: 3 Июль 2005, 15:54:56
Здравствуйте!
Борюсь с этой проблемой уже третий вечер.
Я не имею доступа к администрированию сервера, на котором лежит мой сайт.
Мой сайт работает на apache+php+postgresql.
в postgresql все мои данные хранятся в кодировке utf-8.
когда я делаю echo данных из постгреса я получаю страницу, которая начинается с сигнатуры utf-8. причем не одну, а четыре.
FireFox это проглатывает, а вот Explorer спотыкается.
Файл сценария тоже в кодировке utf-8.
Не подскажете, как решается проблема с этими злосчастными сигнатурами?
http://home.tltsu.ru/~longman - вот тот самый сайт. сигнатуры образуют пустую стоку сверху.
Как выяснилось позже, IE спотыкается только о вторую третью и четвертую сигнатуры. Первую он обрабатывает.
Вот и вопрос - как от них избавиться?
_________________ There is no spoon
Последний раз редактировалось LongMan 3 Июль 2005, 19:01:26, всего редактировалось 1 раз.
не вижу честно говоря факта проблемы. что в ие, что в фф, что в опере нету никаких сигнатур
_________________ критиковать человека не имеет смыла, потому что критика заставляет его защищаться и, как правлио искать оправданий. критиковать человека опасно, так как критика наносит удар его гордости, задевает чувство собственной значитмости и обижает его. (Дейл Карнеги)
а я и не говорил что в броузерах есть сигнатуры.
это такое негласное правило. в начало файла в uft-8 кодировке пишутся три байта которые всем говорят, что это - uft-8.
даже notepad это понимает.
факт проблемы таков - если сигнатуры появляются, значит это кому-нибудь нужно.
Мне интересно либо кому это нужно, либо просто как от этого избавиться.
если я не ошибаюсь это из-за того, что кодировка не указана насильственно
_________________ критиковать человека не имеет смыла, потому что критика заставляет его защищаться и, как правлио искать оправданий. критиковать человека опасно, так как критика наносит удар его гордости, задевает чувство собственной значитмости и обижает его. (Дейл Карнеги)
К сожалению, ошибаетесь.
Кстати, если кому не нравится слово сигнатура, то правильно это называется BOM (byte order marker).
Состоит она из таких символов : ef bb bf
Я подумал - может возможно поймать это с помощью регулярных выражений?
но preg_replace("'\ef\bb\bf'u","",$string) результатов не дал
Это ошибочная ветвь рассуждений.
С переменной оказывается все в порядке. Никаких сигнатур она не содержит. Но после того, как я делаю ее echo то четыре сигнатуры добавляется.
str_replace("\xEF\xBB\xBF", '', $string) значит работает, но в моей переменной этих сигнатур нет. они добавляются при echo.
Уровень доступа: Вы не можете начинать темы. Вы не можете отвечать на сообщения. Вы не можете редактировать свои сообщения. Вы не можете удалять свои сообщения. Вы не можете добавлять вложения.