Ошибка: «Не удается отправить ограничитель кэша сеанса», связанный с кодировкой - PullRequest
1 голос
/ 18 августа 2011

У меня начались проблемы с кодировкой, похоже, что каким-то образом Notepad ++ изменил кодировку или что-то в этом роде. Во всяком случае, все файлы были закодированы в UTF-8, но я проверил, а некоторые изменились на UTF-8 без спецификации. Изменение одного на UTF-8 исправило проблему специальных символов.

"Tageá" изменено на "Tageá", но я начал получать ошибку:

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /home/content/02/6945202/html/usuario/index.php:1) in /home/content/02/6945202/html/usuario/index.php on line 1

Это строка 1:

<? session_start(); ?>

Я не понимаю, почему у меня возникла эта проблема, поскольку при использовании ANSI или UTF-8 без спецификации на странице отображается сообщение об ошибке.

В чем может быть проблема? Спасибо

Ответы [ 3 ]

0 голосов
/ 18 августа 2011

http://blog.onitindustries.com/php/errors/php-session_start-on-first-line-still-getting-error/

ок, попробуйте использовать эту функцию для преобразования строк, сохраните файл как utf-8 без bom для этого.

<?php
session_start();
function charset_decode_utf_8 ($string) {
  /* Only do the slow convert if there are 8-bit characters */
    /* avoid using 0xA0 (\240) in ereg ranges. RH73 does not like that */
    if (! ereg("[\200-\237]", $string) and ! ereg("[\241-\377]", $string))
        return $string;

    // decode three byte unicode characters
    $string = preg_replace("/([\340-\357])([\200-\277])([\200-\277])/e",     
    "'&#'.((ord('\\1')-224)*4096 + (ord('\\2')-128)*64 + (ord('\\3')-128)).';'",    
    $string);

    // decode two byte unicode characters
    $string = preg_replace("/([\300-\337])([\200-\277])/e", 
    "'&#'.((ord('\\1')-192)*64+(ord('\\2')-128)).';'", 
    $string);

    return $string;
}
echo charset_decode_utf_8('Tageá');
?>
0 голосов
/ 18 августа 2011

преобразовать кодировку символов без изменения кодировки файла на UTF-8 без спецификации, поскольку она генерирует пространство перед session_start ()

0 голосов
/ 18 августа 2011

Обычно это вызвано наличием некоторого вывода перед выполнением вышеуказанного вызова.Это происходит потому, что выходные данные должны идти после заголовков, поэтому, если есть выходные данные, заголовки отправляются.Пробелы будут вызывать это, что может быть вызвано пробелами или символами новой строки до или после тегов PHP.

Чтобы исправить эту проблему, вы можете исключить все выходные данные перед этим вызовом, хотя это часто неосуществимо.1003 *

Лучшее решение - включить output_buffering в вашем php.ini.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...