$_SESSION и кодировка

Тема в разделе "PHP", создана пользователем Juri, 28 мар 2010.

Статус темы:
Закрыта.
Модераторы: latteo
  1. Juri

    Juri

    Заблокирован
    Регистр.:
    5 окт 2007
    Сообщения:
    1.068
    Симпатии:
    197
    Суть такова, есть сайт полностью в windows-1251 есть mysql база полностью вся в cp1251 у некоторых юзеров кирилические данные при выводе из сессии отображаются не коректно в виде всяких кракозябр. в чем может быть проблема? куда копать? Такое наблюдается только в фф
     
  2. UDAV

    UDAV

    Регистр.:
    22 июн 2007
    Сообщения:
    781
    Симпатии:
    153
    там где у тебя соединение с базой... сразу после кода соединения, пропиши
    sql_query("set names 'cp1251'", $dbi);
    должно сработать)

    dbi на свое замени.
     
  3. Juri

    Juri

    Заблокирован
    Регистр.:
    5 окт 2007
    Сообщения:
    1.068
    Симпатии:
    197
    Давно прописано, используется класс из dle
    какие еще варианты, уже голову сломал
     
  4. Yozik

    Yozik

    Регистр.:
    5 дек 2007
    Сообщения:
    239
    Симпатии:
    65
    Видимо header-ы где-то не прописаны. В .htaccess кодировка указана?
     
  5. lobzik

    lobzik

    Регистр.:
    8 авг 2006
    Сообщения:
    311
    Симпатии:
    49
    Какое значение у параметра default_charset в php.ini. Может попробовать default_charset = "cp1251" ...
     
  6. Juri

    Juri

    Заблокирован
    Регистр.:
    5 окт 2007
    Сообщения:
    1.068
    Симпатии:
    197
    да

    default_charset вообще не указана.. но почему такая проблема возникает только у некоторых
     
  7. Casper_R

    Casper_R Создатель

    Регистр.:
    3 май 2007
    Сообщения:
    85
    Симпатии:
    25
    может проще iconv() применять для таких случаев, когда все как надо, а почему-то работает ч/з раз.
     
  8. polyetilen

    polyetilen Заблокирован

    Регистр.:
    10 авг 2006
    Сообщения:
    814
    Симпатии:
    474
    когда вся страница в шифре иногда попадалось такое в ie, браузер пытается автоматически определить кодировку если включено, когда в странице указана одна кодировка а сервер в хедере страницы возвращает свою кодировку по умолчанию установленную то ie включает серверную кодировку. firefox по умолчанию вроде отключено определение, так если на странице кодировка не указана он будет показывать кодировку какую установил пользователь в последний раз. Решалось с
    AddDefaultCharset windows-1251
    в .htaccess.

    просмотр хедеров онлайн

    http://web-sniffer.net/

    или дополнение к firefox

    https://addons.mozilla.org/en-US/firefox/addon/3829


    Если так искажаются только данные из сессии, то возможно они попадают в сесию уже испорченные, например из старых cookie в другой кодировке, из формы со страниц в другой кодировке, с ссылок без urlencode, или какая нибудь функция например htmlentities без указания кодировки перед сохранением в сессию исправляет данные.
     
  9. zss

    zss Постоялец

    Регистр.:
    22 июн 2007
    Сообщения:
    55
    Симпатии:
    6
    А в заголовках страниц стоит
    <META http-equiv="Content-Type" content="text/html;charset=windows-1251">
    ?
     
  10. maks_m

    maks_m Создатель

    Регистр.:
    18 ноя 2008
    Сообщения:
    10
    Симпатии:
    0
    у меня такое было.
    лечил так:
    mysql_query("set character_set_client ='cp1251'");
    mysql_query("set character_set_results ='cp1251'");
    mysql_query("set collation_connection ='cp1251_general_ci'");

    вставляю после подключеня к базе
     
Статус темы:
Закрыта.