Я написал код на 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".