Проблемы с русскими буквами при сериализации массива

danneo

Честный
Регистрация
13 Ноя 2007
Сообщения
1.526
Реакции
121
Три часа мозго.....ва толку не дали...
В php создал массив. Далее его сериализую в строку: json_encode($var) и возвращаю в js
А приходит туда пустота в нужном элементе. Если в этот элемент при формировании массива в php запихнуть не русские буквы, то все приходит нормально.
Пробовал решить задачу без сериализации: снача в php serialize($var), но как в js провести обратную десериализацию, не знаю.
Но хотелось бы работать в зашифрованном виде, через json_encode
Подскажите, пожалуйста, как решить проблему?
 
json_encode работает корректно только с UTF-8, ровно как и AJAX. В противном случае надо изголяться с кодировками и перекодированием в base64 или аналогичные...

P.s. json_encode НЕ ШИФРУЕТ ничего, она просто меняет представление с массива на обычный текст (пусть это и формат JSON)...
 
json_encode работает корректно только с UTF-8, ровно как и AJAX. В противном случае надо изголяться с кодировками и перекодированием в base64 или аналогичные....
кодировку файла в utf-8 нужно загнать
все файлы в utf-8...

P.s. json_encode НЕ ШИФРУЕТ ничего, она просто меняет представление с массива на обычный текст (пусть это и формат JSON)...
ну она все таки сериализут. А я передаю массив. Как-то можно еще просто передать массив?
 
Оказывается проблема в другом была: сообщения которые возвращались, были такие:
HTML:
<div clas="error">Размер картинки не должен превышать 1 мб</div>
И json.parse() ругался то на кодировку, то на битый массив из-за кавычек (экранирование не помогло), то на теги div.
Пришлось убрать все теги.
А можно как-то HTML-теги передавать? Почему json не хочет их обрабатывать?
 
console.log(json) что выдает?
И неплохо было бы выдеть код со стороны сервера и со стороны клиента.
 
console.log(json) что выдает?
И неплохо было бы выдеть код со стороны сервера и со стороны клиента.
Получается, что:
если нет html-тегов, то в консоле выводится то, что и должно быть.
А если есть теги, то выводиться ошибка: JSON.parse: unexpected non-whitespace character after JSON data
все что я сделал, дак это обернул возвращаемый текст в php-файле тегами <p>
 
все что я сделал, дак это обернул возвращаемый текст в php-файле тегами <p>
"обернул" уже после encode? Что приходит в ответе от сервера?
Если так:
Код:
<p>{JSON-данные}</p>
то, конечно, это неправильно.

Дабы исключить все ошибки, есть смысл делать примерно так:
Код:
<?php
// тут ничего не выводится. При желании - передать нужный header();
// формируем массив с данными для передачи..
$result=array('message'=>'бла-бла');
$result['error']=0;
$result['message'] = "<p>{$result['message']}</p>"; // обернули тэгами
echo json_encode($result);
exit(); // завершаем выполнение
 
Назад
Сверху