Русские символы 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
Пользуясь этим на стороне сервера я не думаю о кодировке. Ну это так, для расширения кругозора.
                Спасибо, кругозор расширил)            
                    
                            Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.