Есть форма. С нее получаем данные POST'ом. Эти данные записываем в json файл. Проблема: кириллица ни в какую не хочет записываться. Дамп массива в PHP нормальный - что вписали, то и выдает
а вот в json файле лежит вместо кириллицы null. PHP 5.3
$user = array(
'name'=> $user_name,
'lastname'=> $user_lastname,
'mail'=> $user_mail,
'birthday'=> $user_date,
'phone'=> $user_phone,
'cardnumber'=> $user_cardnumb,
);
$json = file_get_contents('card.json');
$json = json_decode($json, true);
$json[] = $user;
$json = json_encode($json);
file_put_contents('card.json', $json);
}
Менял версию на 5.4, вставлял второй параметр $json = json_encode($json, JSON_UNESCAPED_UNICODE); - в json файле стоят простые скобки "", где должна быть кириллица.Кстати, почему-то дамп массива в PHP 5.4 с той же кириллицей выдает "", а латиницу нормально выводит
PHP функция json_encode работает только с UTF8 (соответствующее место в исходнике не сопровождается комментариями, а в последующих версиях и warning убран)
Обратите внимание на string(4) "Иван". Число в скобках - длина строки в байтах. Это однозначно не UTF8, для которого 4 кириллических символа занимают 8 байт, а что-то однобайтовое.
Поэтому вам необходимо или переводить код на использование UTF8 (что предпочтительнее) или конвертировать все строки в UTF8 перед использованием json_encode и, соответственно, обратно конвертировать после json_decode
Сборка персонального компьютера от Artline: умный выбор для современных пользователей