@Kommunikator

Проблема с отображением кодировки UTF-8 без BOM

Возникла следующая проблема:
При открытии файлов PHP в кодировке UTF-8 без BOM вместо русских букв пишется что-то вида "Добро РїРѕР¶". Английские символы при этом отображаются корректно.
Если ставить кодировку просто UTF-8 то текст отображается весь корректно, но появляются сообщения типа "Warning: Cannot modify header information - headers already sent by ..." - это как я понял происходит из-за самого BOM. При наличии данных предупреждений не создаются сессии, а без них не работает то что должно.
В заголовке страницы указано
<meta http-equiv="content-type" content="text/html" charset="utf-8" />

Для смены кодировки пользуюсь редактором Notepad ++.
Перерыл кучу форумов, подобные вопросы встречаются, но без ответов.
Подскажите как сохранить файл в кодировке UTF-8 без BOM, чтобы при этом корректно отображалось содержимое страницы.
  • Вопрос задан
  • 20372 просмотра
Решения вопроса 2
@frees2
setlocale(LC_ALL, 'ru_RU.utf8');
Header("Content-Type: text/html;charset=UTF-8");
Ответ написан
@frees2
"Warning: Cannot modify header information - headers already sent
------------
По всей видимости потому как уже где то прописана в каком то скрипте кодировка, вы пишите второй или иной раз, поэтому такая запись.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 5
Если nginx добавь charset utf-8;
Если apache добавь AddDefaultCharset utf-8
Либо в .htaccess
IndexOptions +Charset=UTF-8
Ответ написан
Комментировать
@Kommunikator Автор вопроса
Спасибо за помощь, добавил в скрипты с битой кодировкой
Header("Content-Type: text/html;charset=UTF-8"); битая кодировка исчезла.
Также были проблемы со вложенностью скриптов. Проверил, исправил и Warning тоже убрался.
Ответ написан
Комментировать
@Kommunikator Автор вопроса
В других скриптах кодировка не встречается больше нигде.
Ответ написан
@alexesDev
"Warning: Cannot modify header information - headers already sent by ..."
Это может быть из-за того, что у вас где-то в файле до <?php лишний пробел (или после ?>, если вы их пишите). Т.е. он же говорит, что не может установить заголовок, потому что уже отправил остальные заголовки (для этого достаточно оставить пробел перед <?php).

Можно сделать буферизацию вывода, тогда точно станет ясно.
Ответ написан
Комментировать
nazarpc
@nazarpc
Open Source enthusiast
Почему не использовать современное <meta charset="utf-8"> ?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы