php json_encode возвращает ноль - PullRequest
8 голосов
/ 05 июля 2010
Array
(
    [sEcho] => 1
    [iTotalRecords] => 7521
    [iTotalDisplayRecords] => 1
    [aaData] => Array
        (
            [0] => Array
                (
                    [0] => Nordic Capital Buys SiC Processing
                    [1] => 2010-06-21/nordic-capital-buys-sic-processing
                    [2] => PEHub Media
                    [3] => Business
                    [4] => completed
                    [5] => Nordic Capital has acquired a 70% stake in SiC Processing AG, a German industrial recycling company, from Frog Capital. No sale price was disclosed.  SiC Processing’s founding family retains a 25% holding, while former lead investor Zouk Ventures retains a 5% stake.

                    [6] => Admin, China, Frog Capital, Germany, Italy, Iyad Omari, Manufacturing, Norway, PEHub Media, Photovoltaic Wafer Manufacturing, Renewable Energy, Semiconductor, United States
                )

        )

)

echo json_encode($myArr);

{"sEcho": "1", "iTotalRecords": 7521, "iTotalDisplayRecords": "1", "aaData": [["Nordic Capital Buys SiC Processing "," 2010-06-21 / nordic-capital-buys-sic-processing"," PEHub Media "," Бизнес "," завершено ", null ,«Admin, Китай, Frog Capital, Германия, Италия, Ияд Омари, Производство, Норвегия, PEHub Media, Производство фотоэлектрических пластин, Возобновляемая энергия, Полупроводник, Соединенные Штаты]]}

Обратите внимание наNULL в середине строки после завершения

Почему это, какие побег / манипуляции мне нужно выполнить, чтобы закодировать это?

Я пытался, addslashes

Ответы [ 5 ]

24 голосов
/ 05 июля 2010

Из руководства:

Обратите внимание, что если вы попытаетесь закодировать массив, содержащий значения не-UTF, вы получите нулевые значения в результирующей строке JSON.Вы можете пакетно кодировать все элементы массива с помощью функции array_map:

$encodedArray = array_map(utf8_encode, $myArr);
echo json_encode($encodedArray);
1 голос
/ 05 июля 2010

На самом деле он не возвращает ноль, http://codepad.org/A34KdUf5.

Возможно, ваша версия PHP не поддерживает json_encode ().

1 голос
/ 05 июля 2010

у меня работает на 5.2.13. Убедитесь, что вы используете хотя бы PHP 5.2.0 и что PHP не был скомпилирован с --disable-json. Вы также можете проверить, что отчеты об ошибках (и / или ведение журнала) включены.

1 голос
/ 05 июля 2010

Я только что попробовал тот же самый код, и он вернул следующее:

{"var1":"test string","var2":"Nordic Capital has acquired a 70% stake in SiC Processing AG, a German industrial recycling company, from Frog Capital. No sale price was disclosed.  SiC Processing\u2019s founding family retains a 25% holding, while former lead investor Zouk Ventures retains a 5% stake.","var3":"test string 3"}

Какую версию PHP вы используете? И это с вашего локального хоста или вы запускаете это на удаленном компьютере?

0 голосов
/ 29 июня 2015

Более простой способ - $store_name = utf8_encode(name_of_varaible), но, пожалуйста, убедитесь, что ваш набор символов ISO-8859-1.

...