|
|
|
| было засериализовано массив на локалке изаписано в базу, перенёс на хост unserialize отдаёт false..
локалка :: PHP Version 5.2.10
host :: PHP Version 5.2.14
возможно чтото с кодировкой?... Хотя в субд всё видно, всё перенеслось.
багфикс 5.2.14
Fixed SplObjectStorage unserialization problems (CVE-2010-2225). (Stas)
|
может в этом дело?... хотя врядли( | |
|
|
|
|
|
|
|
для: sl1p
(31.03.2011 в 12:18)
| | А на локальной машине массив преобразуется в исходную форму нормально?
PS Вообще сериализация вещь достаточно коварная и не очень надежная, лучше её избегать для долговременного хранения данных (особенно, если они являются ключевыми). | |
|
|
|
|
|
|
|
для: cheops
(31.03.2011 в 12:27)
| | да я согласен, просто там жестяк былбы по архитектуре базы, нужно было быстро очень реализовать. Переделаю по возможности.
Кстати, действительно проблема в кодировке. Это если помните я говорил про то что встраиваю модуль который под ютф8 в админку под цп1251.
Перед конектом к базе поставил mysql_query("SET NAMES 'utf8'"); и теперь ок, но теперь проблема с текстом(кракозяблы).. Что делать(
+ база движка в который встраиваю на цп1251, мои таблицы под ютф8.. | |
|
|
|
|
|
|
|
для: sl1p
(31.03.2011 в 12:31)
| | прошу прощения за спам мыслей, я так подумал просто что нужно базу перевести в цп1251.. Как это сделать?.. Вставить дамп в редактор и перекодировать или это через ж? | |
|
|
|
|
|
|
|
для: sl1p
(31.03.2011 в 12:39)
| | Лучше да, через дамп перекодировать, исправив в нем кодировки таблиц и SET NAMES указав текущую кодировку файла (это если без phpMyAdmin разворачивать). | |
|
|
|
|
|
|
|
для: cheops
(31.03.2011 в 12:52)
| | Блин........ Это ж получается при переводе в кодировку, длина строк изменлась?.. или как?
Имеется ввиду что serialize указывает перед данными их длину..
Всё перевёл кракозяблов нет, но снова не пашет unserialize..(
----------------
Если сделать так:
$s = iconv("cp1251", "utf-8", $s);
где $s это переменная в которой засериализированный массив, то всё ок... Почему так? | |
|
|
|
|
|
|
|
для: sl1p
(31.03.2011 в 13:08)
| | Хм... вообще говоря да, длина меняется, serialize() в кодировках точно разбираться не будет. | |
|
|
|
|
|
|
|
для: cheops
(31.03.2011 в 13:56)
| | ох.. короче решил решил проблему через ж полную..
просто анписал скриптец который ходил по базе брал эти засериализированные массивы, перекодивал в ютф8 распаковывал, перекодивал значения в цп1251 опять спаковывал и сохранял...))
Мда.. не думал никогда что это такое мучение.. И теперь чётко стало ясно зачем юзать ютф8 в своих разработках.. | |
|
|
|