@bitrixweb
Вечно молодой, вечно пьяный

Почему не работает json_decode после iconv?

Привет, друзья. Пожалуйста, подскажите почему не работает json_decode после iconv?
Ситуация такова: есть сайт в cp1251, есть удаленный сервер, который по API (curl) отдает JSON в utf-8. Естественно, кириллица в нем кракозябрами выходит. Для этого я делаю:
$actions_converted = iconv("utf-8", "cp1251", curl_exec($ch));
$actions = json_decode($actions_converted);

В $actions записывается NULL, но при этом в $actions_converted все записывается как надо, т.е. конвертация происходит удачно.

Пробовал еще вот так:
$actions = json_decode(curl_exec($ch));
$actions_converted = iconv("utf-8", "cp1251", $actions);

Ситуация аналогична, но теперь в $actions я получаю объект, т.е. все ок, а вот в $actions_converted - NULL.

Пожалуйста, подскажите на чем затык происходит. Всю голову сломал.

Большое спасибо и светлой кармы всем ответившим!
  • Вопрос задан
  • 410 просмотров
Решения вопроса 2
iam_not_a_robot
@iam_not_a_robot
Так она только с utf-8 работает
json_last_error() что-то показывает?
Ответ написан
Adamos
@Adamos
Все правильно.
json_decode принимает строку в UTF-8, выдает объект.
iconv принимает строку в одной кодировке, выдает строку в другой кодировке.
Вы в первом случае пытаетесь распарсить строку не в той кодировке, во втором - сменить кодировку у всего объекта.
Естественно, ни то, ни другое не работает.
Вам нужно, получив объект, конвертировать каждое из его полей отдельно.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы