столкнулся с "(нет слов чтоб выразить)"
серелизуем данные на win-1251
serialize(array(1,2,"Текст")) = a:3:{i:0;i:1;i:1;i:2;i:2;s:5:"Текст";}
вроде все правильно и корректно
теперь тоже самое на UTF-8
serialize(array(1,2,"Текст")) = a:3:{i:0;i:1;i:1;i:2;i:2;s:10:"Текст";}
a:3:{i:0;i:1;i:1;i:2;i:2;s:5:"Текст";} = win-1251
a:3:{i:0;i:1;i:1;i:2;i:2;s:10:"Текст";} =UTF-8
ну как вам?!
и соответственно с unserialize проблемы если не то число для текста
1. DlTA - 09 Ноября, 2011 - 12:14:24 - перейти к сообщению
2. Мелкий - 09 Ноября, 2011 - 12:27:56 - перейти к сообщению
Таки всё правильно. UTF8 же.
3. Самогонщик - 09 Ноября, 2011 - 12:31:57 - перейти к сообщению
DlTA пишет:
А какие конкретно проблемы?
и соответственно с unserialize проблемы если не то число для текста
4. caballero - 09 Ноября, 2011 - 12:46:26 - перейти к сообщению
Цитата:
и соответственно с unserialize проблемы
нет там никаких проблем - неоднократно проверено
5. Самогонщик - 09 Ноября, 2011 - 12:49:03 - перейти к сообщению
caballero пишет:
Если сериолизовать строку в файле утф-8, а десериализовать цп-1251 или наоборот что будет?нет там никаких проблем - неоднократно проверено
Спрашиваю из чистого любопытства. Может кто-нибудь провести тест?
6. caballero - 09 Ноября, 2011 - 12:59:17 - перейти к сообщению
Цитата:
Если сериолизовать строку в файле утф-8, а десериализовать цп-1251
то что ты сериализуешь то он и отдает, если ты по дороге код конечно не перекодируешь. Не очень понятно что значит сериализовать в одной кодировке а десериализовать в другой
PHP вообще хранит строчные данные в UTF16
7. Самогонщик - 09 Ноября, 2011 - 13:03:51 - перейти к сообщению
caballero пишет:
Можно ссылку на документацию?PHP вообще хранит строчные данные в UTF16
Я сейчас подыму тестовое окружение и попробую сам понять что значит
caballero пишет:
Не очень понятно что значит сериализовать в одной кодировке а десериализовать в другой
8. Мелкий - 09 Ноября, 2011 - 13:13:21 - перейти к сообщению
caballero пишет:
PHP вообще хранит строчные данные в UTF16
PHP вообще хранит строки как байты. О чём число перед строкой и говорит: читать столько байт - это будет строка.
9. caballero - 09 Ноября, 2011 - 13:14:04 - перейти к сообщению
Цитата:
Можно ссылку на документацию
документацию чего? Это внутренний формат - общеприняттый для сишных програм.
Цитата:
PHP вообще хранит строки как байты
все программы хранят все данные в байтах
Цитата:
О чём число перед строкой и говорит
в си нет числа перед строкой. И строк тоже нет
10. DlTA - 09 Ноября, 2011 - 13:24:38 - перейти к сообщению
Самогонщик пишет:
фигня получитсяЕсли сериолизовать строку в файле утф-8, а десериализовать цп-1251 или наоборот что будет?
1) код символов не совпадет
2) в топе темы
(Добавление)
но если с первым можно было бы легко справиться пережав одну большую строку
то вот для того чтоб обойти вторую проблему надо лепить костыль
(переносить все сайты на utf-8 не предлагайте, сам умный.)
11. Мелкий - 09 Ноября, 2011 - 13:29:02 - перейти к сообщению
caballero пишет:
в си нет числа перед строкой. И строк тоже нет
Я про сериализованный вид. А вы про что?
(Добавление)
DlTA пишет:
2) в топе темы
В чём там фигня-то? Поведение полностью адекватное.
12. Самогонщик - 09 Ноября, 2011 - 13:36:12 - перейти к сообщению
caballero пишет:
Не слышал такого, хотелось бы пруфов именно для php.Это внутренний формат - общеприняттый для сишных програм.
DlTA пишет:
Всё получилось няшно. Проверил так: создал два файла, которые записывают в файл результат serialize(array(1,2,"Текст")), файлы в кодировке утф-8 и цп-1251. После чего прочитал и восстановил. Всё прошло нормально, нужно только сменить кодировку у полученных данных и профит.фигня получится
Были ещё файлы cp1251.php и _utf.php для проверки в обратном направлении.