Почему моя строка JSON имеет значение NULL?

Я написал код на PHP, чтобы увидеть вывод строки JSON. Но я получаю нулевое значение.

<?php $l=array(); $l[] = array('a'=>'@cÐaÐjÔÐ J kf _ÞÒi^ ','b'=>']éÞ[ѯРQtÍ]hà_ , `ËSÐ J heZ Òhi'); echo $j = json_encode($l); ?> 

Вывод-:

  [{"a":null,"b":null}] 

Почему выход JSON приближается к нулю. Я ожидаю, что должна быть проблема кодирования символов.

Я хочу, чтобы результат был в следующем формате.

 [{"a":"@cÐaÐjÔÐ J kf _ÞÒi^","b":"]éÞ[ѯРQtÍ]hà_ , `ËSÐ J heZ Òhi"}] 

Пожалуйста, помогите мне. Пожалуйста, предложите мне некоторое решение

Заранее спасибо !!!

Возможно, вам понадобится использовать utf8_encode () строку перед нажатием на массив, а затем json_encode, поскольку json_encode () работает только с данными, закодированными utf8

 $l=array(); $l[] = array('a'=>utf8_encode('@cÐaÐjÔÐ J kf _ÞÒi^ '), 'b'=>utf8_encode(']éÞ[ѯРQtÍ]hà_ , `ËSÐ J heZ Òhi')); echo json_encode($l); 

Ок, похоже, ваша проблема не так проста, и вам нужно использовать

 htmlentities( (string) $value, ENT_QUOTES, 'utf-8', FALSE); 

справиться с ситуацией

 $array = array("a"=>htmlentities( (string) "@cÐaÐjÔÐ J kf _ÞÒi^ ", ENT_QUOTES, 'utf-8', FALSE), "b"=>htmlentities( (string) "]éÞ[ѯРQtÍ]hà_ , `ËSÐ J heZ Òhi", ENT_QUOTES, 'utf-8', FALSE) ); $json = json_encode($array); echo ($json); 

проверьте здесь http://phpfiddle.org/main/code/mh8-7ua

Вам нужно добавить, как указано выше, в элементы массива.

Я воссоздал описанное поведение, используя ограниченную кодировку.

Проверьте кодировку файла вашего php-скрипта. Убедитесь, что он установлен в unicode или utf8, если он доступен.

В противном случае вам придется сначала преобразовать свою строку в utf8, как сказал Абхик в своем ответе.

Тогда ваш вывод будет выглядеть следующим образом:

 [{"a":"@c\u00d0a\u00d0j\u00d4\u00d0 J kf _\u00de\u00d2i^ ", "b":"]\u00e9\u00de[\u00d1\u00af\u00d0 Qt\u00cd]h\u00e0_ , `\u00cbS\u00d0 J heZ \u00d2hi"}] 

Это работает по назначению, поскольку …

Любой символ может быть экранирован. Если символ находится в Basic
Многоязычная плоскость (U + 0000 через U + FFFF), то это может быть
представленный как шестисимвольная последовательность: обратный солидус, затем
строчной буквой u, за которой следуют четыре шестнадцатеричных цифры, которые
кодировать кодовую точку символа. Шестнадцатеричные буквы A, хотя
F может быть верхним или строчным. Так, например, строка, содержащая
только один обратный символ солидуса может быть представлен как
"\ U005C".