Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: "Портится" кодировка
 
 автор: MRE   (04.07.2007 в 09:31)   письмо автору
 
 

В массиве $_SESSION хранятся некоторые данные, которые нужны постоянно на сайте.
Использую session_start(); при загрузке каждой страницы.
Есть скрипт, который отрабатывает динамично аяксом, в котором также нужны данные из $_SESSION. В начале этого скрипта также использую session_start(); (иначе переменные не подтягиваются естественно).
Проблема в следующем: скрипт обращается к mysql и использует кодировку utf-8, хотя сам сайт в 1251, и получается так, что после отработки этого скрипта переменные в массиве $_SESSION, которые написаны русскими символами превращаются сами понимаете во что ;)
И при последующей работе сайта они все в таком виде :(
Убираю session_start(); из скрипта - все ок, но соответсвенно не могу получить доступ к переменным из массива $_SESSION.
Как быть?
Пробовал

$_SESSION['data'] = from_utf($_SESSION['data']);
function from_utf($data)
{
    return iconv('utf-8','windows-1251',$data);
}

Не помогло.

   
 
 автор: Trianon   (04.07.2007 в 09:45)   письмо автору
 
   для: MRE   (04.07.2007 в 09:31)
 

Что мешает хранить данные utf-8 в отдельном элементе массива $_SESSION?

   
 
 автор: MRE   (04.07.2007 в 10:49)   письмо автору
 
   для: Trianon   (04.07.2007 в 09:45)
 

Отдельно для utf, отдельно для 1251 чтоли?

   
 
 автор: вит   (04.07.2007 в 10:39)   письмо автору
 
   для: MRE   (04.07.2007 в 09:31)
 

Ну по такому куску кода точно сложно сказать, последовательность следующая, если данные в базе хранятся в кодировке cp1251 то извлекаем данные и переводим их в utf-8 , обрабатываем и выводим, просто скорее всего надо внимательнее посмотреть текст скрипта

   
 
 автор: MRE   (04.07.2007 в 10:53)   письмо автору
 
   для: вит   (04.07.2007 в 10:39)
 


<?php
    session_start
(); 
    
header('Content-Type: text/xml; charset=windows-1251');
    include(
"../inc/module/init.php");
    include(
"../inc/module/db_class.php");
    
$_SESSION['login'] = to_utf($_SESSION['login']);
    
$db1 = new db();
    
$db1->query("SELECT * FROM users WHERE id='{$_SESSION['id']}'");
    
$row $db1->fetch();
    
$login $row['login'];
........................................


Что только не пробовал ничего не помогло - сбивает и все, в базе хранится все в utf.

   
 
 автор: MRE   (04.07.2007 в 14:02)   письмо автору
 
   для: MRE   (04.07.2007 в 10:53)
 

Все, справился.
Не стал искать сложных путей.
Сделал в загаловке страницы считывание логина из БД и все работает ;)

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования