Русские символы JSON в PHP и в Javascript
Здравствуйте!
Ситуация такая:
Преобразую массив в json на php. Получившийся json записываю в куки.
В яваскрипте считываю куку, преобразую в объект, меняю одно значение массива, преобразую обратно в json и сохраняю обратно в куку.
На сервере исправленную куку читаю, преобразую в массив, но значение на русском не преобразовывается в читаемый вариант.
Сначала на сервере:
Посоветуйте, пожалуйста, как этого избежать?
Ситуация такая:
Преобразую массив в json на php. Получившийся json записываю в куки.
В яваскрипте считываю куку, преобразую в объект, меняю одно значение массива, преобразую обратно в json и сохраняю обратно в куку.
На сервере исправленную куку читаю, преобразую в массив, но значение на русском не преобразовывается в читаемый вариант.
Сначала на сервере:
$data = array(
"area_city" => $area_city,
"area_code" => $val['area_code'],
"area_phone" => $val['area_phone'],
"area_confirm" => '0'
);
$area_json = json_encode($data);
setcookie ('user_area', $area_json);
Потом на яваскрипте:$('.confirm_yes').click(function(){
// получим куку
user_area = getCookie('user_area');
// если кука существует
if ( user_area != null ) {
// парсим куку
user_area_ar = $.parseJSON(user_area);
// назначаем время жизни куки
expires = new Date();
expires.setDate( expires.getDate() + 7 );
user_area_ar["area_confirm"] = "yes";
// формируем куку
user_area = JSON.stringify(user_area_ar);
delCookie('user_area');
setCookie ('user_area', user_area, expires.toUTCString(), '/', window.location.hostname, null);
}
});
Кука перед преобразованием, прочитанная яваскриптом, имеет вид:{"area_city":"\u0411\u0435\u043b\u0433\u043e\u0440\u043e\u0434","area_code":"878","area_phone":"987+654+87","area_confirm":"0"}
Кука, прочитанная php после преобразования ее яваскриптом, имеет вид:{"area_city":"%u0411%u0435%u043B%u0433%u043E%u0440%u043E%u0434","area_code":"878","area_phone":"987 654 87","area_confirm":"yes"}
Получается так, что русское значение json не преобразуется обратно в читаемый вид.Посоветуйте, пожалуйста, как этого избежать?
Комментарии: 4
Смотрите php.net/manual/ru/json.constants.php JSON_UNESCAPED_UNICODE. Если php >= 5.4, то вам поможет
$data = json_encode($data, JSON_UNESCAPED_UNICODE);
Спасибо, помогло)
$area_json = json_encode($data);
$modx->fromJSON$modx->toJSON
Пользуясь этим на стороне сервера я не думаю о кодировке. Ну это так, для расширения кругозора.
Спасибо, кругозор расширил)
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.