Кодировка

  • Автор темы Автор темы pervrom1
  • Дата начала Дата начала
Статус
Закрыто для дальнейших ответов.

pervrom1

Участник
Топикстартер
Сообщения
37
Реакции
0
Здравствуйте.
В страничке local.php всего одна функция:
<?php
header("Location:http://www.mail.ru");
?>
Если сохраняю этот файл в кодировке ANSL, то при запуске страницы происходит переход на почту mail, как и нужно.
А мне нужна UTF-8. Но в этой кодировке, при запуске страницы выскакивает предупреждение:
Warning: Cannot modify header information - headers already sent by (output started at /test.ru/WWW/site/testing.php:1) in /test.ru/WWW/site/testing.php on line 2.
Пробовал вставлять header('Content-type: text/html; charset=utf-8'); AddDefaultCharset UTF-8; <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> - всё то же.
Может для самого PHP нужно прописать что-то? :)
Спасибо.
 
Ответ: Кодировка

Насколько я помню, перед header'ом ничего не должно отдаваться в браузер, иначе и возникает эта самая ошибка. Другими словами словами, в вашем local.php есть какие-то байты, которые успевают просочиться в stdout до выполнения header. Резюме: попробуйте сохранять свой файл в UTF-8 without BOM (или with BOM, что-то я не уверен :)). Можно еще посмотреть Википедию.
 
Ответ: Кодировка

перед header'ом ничего не должно отдаваться в браузер
Я оставил только эту одну функцию, в самом начале. Всё остальное вообще убрал. Только:
<?php header("Location:http://www.mail.ru"); ?> - одна эта строчка на всей странице, без пробелов вначале неё.
(Если сохраняю в ANSL, то получается.)
В блокноте, кажется, нет вашей кодировки, но я попробую поискать через другие редакторы.
Спасибо.
 
Ответ: Кодировка

В блокноте, кажется, нет вашей кодировки, но я попробую поискать через другие редакторы.
Мне сложно ответить на этот вопрос, я не работаю на РС. У меня это выглядит так:
Screen shot 2011-06-30 at 8.56.45 PM.png
Смутно припоминаю, что подобный выбор может быть в Notepad++.

PS. Я пытался сказать, что ошибка выдается не от того, что у вас в файле есть лишние символы. Там есть некие байты в начале файла, которые не отображаются, но портят всю картину :).
 
Ответ: Кодировка

Там есть некие байты в начале файла, которые не отображаются, но портят всю картину
Очень обнадёживающе :) Всего-то нужно, найти эти байты... Вы меня успокоили :) Notepad++ обязательно скачаю )
 
Ответ: Кодировка

Помните, что header() обязана вызываться до отправки любого вывода: нормальными ли тэгами HTML, пустыми строками в файле или из PHP. Очень частой ошибкой является чтение кода функциями include() или require(), или другой функцией доступа к файлу, и наличие пробелов или пустых строк, которые выводятся до вызова header(). Та же проблема возникает при использовании едингого PHP/HTML-файла.
http://www.php.su/functions/?header
А вообще не понимаю запар с кодировками, utf от ansi ничем не отличаются для символов стандартной латиницы.
 
Ответ: Кодировка

вообще не понимаю запар с кодировками, utf от ansi ничем не отличаются для символов стандартной латиницы.
Тем не менее. Только что провел эксперимент. В файле local.php одна-единственная строчка:
Код:
<?php header("Location:http://www.mail.ru"); ?>
Если этот файл сохранить на сервере с кодировкой UTF-8 without BOM, то все отрабатывается как надо. Если его же сохранить как UTF-8 with BOM, то выводится то самое сообщение об ошибке, что и у ТС. Скриншоты не делал, лень, так что поверьте на слово :).
 
Ответ: Кодировка

В догонку если проблема все же в DOM
BOM (Byte Order Mark) – представляет из себя три нечитаемых символа, которые смещают ваши данные от начала файла
Они соответственно распознавались как html-вывод и далее header уже не мог отработать.
Вообще лучше пользоваться каким-нить файловым менеджером и отсматривать что насохраняли редакторы.
А вики лучше по utf, там и про bom написано http://ru.wikipedia.org/wiki/UTF-8
 
Статус
Закрыто для дальнейших ответов.