Serialize ведет себя по-разному в различных ОС

mity

Новичок
оставьте rb и после считывания проверяйте длину и crc32
Ну явно повреждение строки
 

sax player

Новичок
t - специальный ключ как раз для перевода строки (выше по ветке выдержка из мана)
 

mity

Новичок
На выходе seriliaze бинарные данные, которые нужно обрабатывать как любой бинарный файл, и только так!
 

sax player

Новичок
Нет никакого повреждения. При заливке обратно на локалку - все читается

-~{}~ 27.05.10 17:53:

Notice: unserialize() [function.unserialize]: Error at offset 123 of 184 bytes

Проблема В СЕРЕДИНЕ строки.

-~{}~ 27.05.10 17:55:

Windows offers a text-mode translation flag ('t') which will transparently translate \n to \r\n when working with the file. In contrast, you can also use 'b' to force binary mode, which will not translate your data. To use these flags, specify either 'b' or 't' as the last character of the mode parameter.
 

mity

Новичок
попробуйте так
PHP:
file_put_contents($name,urlencode(serialize($array));

$array=serialize(urldecode(file_get_contents($name));
 

vovanium

Новичок
sax player
а ты файл заливаешь на хостинг в текстовом или в бинарном режиме?
 

sax player

Новичок
Автор оригинала: mity
попробуйте так
PHP:
file_put_contents($name,urlencode(serialize($array));

$array=serialize(urldecode(file_get_contents($name));
PHP:
  echo urlencode(" 
 ");
под юникс выводит %0A++, а под винду - %0D%0A++.

Так что строки получится разные

-~{}~ 27.05.10 18:14:

Автор оригинала: vovanium
sax player
а ты файл заливаешь на хостинг в текстовом или в бинарном режиме?
Что значит в текстовом? ФТП так по-моему, не умеет...
 

mity

Новичок
echo urlencode(chr(10).chr(13)." ".chr(13).chr(10)." ".chr(10)." ".chr(13));
Что выводит под windows и unix?
 

mity

Новичок
Супер!!!!!!!!!!!!!!
Просто разные текстовые редакторы у Вас вставляют разный перевод строк.

PHP:
//сохраняете на одном сервере
file_put_contents($name,urlencode(serialize($array)); 

//считываете на другом
$array=serialize(urldecode(file_get_contents($name));
 

sax player

Новичок
Да нет никаких редакторов! данные из формы.
Я и говорю, что одна и та же форма на разных серверах генерит разные переводы строк.

-~{}~ 27.05.10 18:29:

И то, что сериализовано на одном сервере - на другом из-за этого не ансериализуется.
 

mity

Новичок
И что
file_put_contents($name,urlencode(serialize($array));
$array=serialize(urldecode(file_get_contents($name));
не помогает?
 

sax player

Новичок
В общем, суть понятна, как решать - тоже.

Так что спасибо за обсуждение.

Ну а в моем случае -хорошо, что вовремя обнаружил.
А то было бы: написал англю версию, отдал переводчикам, потом на локалке подправил чутка, залил обратно - и все потерял...

Большое спасибо всем.
Тему можно закрывать

-~{}~ 27.05.10 18:35:

Да не помогает в силу того, что echo

urlencode("
");

под юникс выводит %0A++, а под винду - %0D%0A++.
 

vovanium

Новичок
Что значит в текстовом? ФТП так по-моему, не умеет
Как раз у FTP есть 2 режима, в бинарном ничего не меняется, а в текстовом меняются переводы строк в зависимости от операционки. По умолчанию FTP-клиенты работают на автомате, у них есть список расширений файлов которые нужно заливать в текстовом, остальные заливаются в бинарном.
 

dimagolov

Новичок
А то было бы: написал англю версию, отдал переводчикам, потом на локалке подправил чутка, залил обратно - и все потерял...
Да нет никаких редакторов! данные из формы.
это только мне кажется, что у автора раздвоение личности?
 
Сверху