[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Проблема с unserialize()
Smoren
Запускаю следующий скрипт на локальной машине (Linux, Apache2, PHP5).
PHP
<?php

include('db.php');

serialize_and_write();

function 
serialize_and_write()
{
    global 
$MAIN;
    
    
$serialMain serialize($MAIN);
    
$file fopen('db.txt''w');
    
    if(
file_put_contents('db.txt'iconv("UTF-8""windows-1251"$serialMain)))
        echo 
'Serializing and writing ok!<br/>';
}



Все работает - файл сохраняется в нужной мне кодировке, но при использовании unserialize() в другом скрипте сервер выдает следующее:
Notice: unserialize(): Error at offset 68 of 18759 bytes in /home/www/testsite/www/index.php on line 6

Код выглядит так:
PHP
$serialMain join(''file('db.txt'));
$MAIN unserialize($serialMain);


Если изменить его так:
PHP
$serialMain join(''file('db.txt'));
$MAIN unserialize(iconv("windows-1251""UTF-8"$serialMain));

то функция unserialize() срабатывает, но на странице вместо текста отображается характерная проблемам с кодировкой белиберда, т.к. сама страница в кодировке cp1251.

Кто-нибудь, помогите справиться с проблемой. Заранее благодарен.



Спустя 1 час, 49 минут, 58 секунд (29.09.2009 - 13:23) Sylex написал(а):
Smoren
наверное нужно заботиться не о том, в какой кодировке хранить данные в виде сериализованного массива.... а о том - в какой кодировке ты берешь данные из файла, и в какой тебе нужно выводить smile.gif

тебе нужно выполнить изменение каждого элемента массива $MAIN при выводе, если это необходимо (исходная кодировка файла не совпадает с текущей рабочей)

Спустя 1 час, 25 минут, 28 секунд (29.09.2009 - 14:48) Smoren написал(а):
Sylex
Спасибо за совет, но я уже разобрался с проблемой: в php.ini изменил default_charset на windows-1251, после чего все заработало без финтов с перекодировкой.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.