PHP: Не работает json_encode или почему json_encode возвращает NULL

минута на чтение

Здравствуйте. Недавно столкнулся с проблемой парсинга JSON методом json_encodeJSON приходит правильный. неоднократно проверял, в чем проблема понять не могу. Оказывается все очень просто (ну или почти просто). Как я понял, JSON должен иметь кодировку UTF-8. Такая ошибка возникает, если Вы отправляете JSON в другой кодировке, например в windows-1251 (cp1251).

Вот несколько советов при использовании json_encode, json_decode:

1. При получении конвертировать данные в utf-8 при помощи iconv.

$json_obj = json_decode(iconv("windows-1251","utf-8",$_POST['json_data']));

Кстати, чтобы тип у $json_obj был не object, а array, нужно указать в json_decode второй параметр в значение true.

$json_arr = json_decode(iconv("windows-1251","utf-8",$_POST['json_data']), true);

2. Перед отправкой данных экранировать данные методом urlencode();

Хотя в принципе нормальный упаковщик JSON должен прогонять все данные через urlencode.

3. Если Вы передаете данные целиком из БД. То переда основным запросом можно вставить:

mysql_query('SET CHARACTER SET utf8');

4. JavaScript. Я формирую JSON в JavaScript, как мне быть?

Что делать, если Вы формируете данные в JS, при помощи того же JSON.stringify? Тут дело обстоит сложнее. Нужно при формировании JSON конвертировать сразу данные в UTF-8.

Пока это все, что я узнал. Буду узнавать дальше.

p.s. А вообще, друзья-товарищи я считаю на данный момент лучше использовать на сайтах кодировку utf-8.

Facebook Vk Ok Twitter Telegram

Похожие записи:

Например, Вам необходимо конвертировать RGB-значение в шестнадцатеричный формат. Вам поможет следующая функция: function getHexByRGB($r,$g,$b) {   return sprintf('#%02x%02x%02x', $r, $g, $b); } Тут все гениально и просто. Функция sprintf возвращае...
Как остановить скрипт PHP, который висит в процессе. Для этого нужно сначала вывести список всех php-скриптов, которые на данный момент запущены. Затем выбрать ID подходящего процесса и просто его завершить. Вот простой совет как остановить PHP скрипт в Linux....
Если Вы создаете сайт, вам наверное часто приходилось что-то делать на сайте во время его работы, то есть «на бою». Но что делать, если Вы хотите видеть, что  ремонтируете, делаете, создаете, а пользователи этого видеть не должны. Есть и тут решение. Ограничив...