У setcookie() есть проблема с заголовком: нет пробелов, текста или чего-то еще перед тегом ‹?php

В следующем коде нет пробелов или текста перед открывающим тегом php. При применении я получаю предупреждение о том, что заголовок уже вызывался "в строке 3" (setcookie). Я в недоумении почему.

<?php
    $value = 'something from somewhere';
    setcookie("TestCookie", $value);
?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title></title>

</head>
<body>

</body>

</html>

Спасибо за любую помощь.


person Voriki    schedule 22.07.2011    source источник
comment
Вы сохранили файл как UTF8+BOM? Если вы не сделали этого, в начале файла выводятся 3 дополнительных символа.   -  person PeeHaa    schedule 22.07.2011


Ответы (1)


Если вы сохранили файл как UTF-8 с BOM (Byte Order Mark), в начале файла выводятся три дополнительных символа.

Эти символы говорят (глупым) приложениям, что это файл UTF-8.

Использование спецификации не требуется для большинства приложений.

http://en.wikipedia.org/wiki/Byte_order_mark

Если вы снова сохраните файл только без спецификации, все должно быть в порядке.

Не уверен, что это то, что происходит, не видя самого файла, но оно того стоит.

Некоторые редакторы показывают, что это за файл. Я сам использую EditPlus в качестве редактора (Windows), и он показывает кодировку файла.

person PeeHaa    schedule 22.07.2011
comment
Спасибо! В Notepad+ была возможность сохранения без спецификации, но она не была по умолчанию. Его изменение решило проблему. - person Voriki; 22.07.2011