2010-07-05 2 views
8
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 покупает Обработка карбида кремния </а> </DIV> "" 2010-06-21/нордического-капитал-покупает-SIC обработка </DIV>», "PEHub Медиа", "Бизнес", "завершен", нуля, « Admin, China, Frog Capital, Germany, Italy, Iyad Omari, Manufacturing, Норвегия, PEHub Media, производство фотоэлектрических вафель, возобновляемые источники энергии, полупроводники, США]]PHP json_encode возвращение нулевой

Примечания нуля в середине строки после завершения

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

Я попытался, addslashes

+0

работают для меня. Проверьте свою конфигурацию PHP, я думаю, что json_ * материал может быть отключен. –

+0

Просьба предоставить код PHP, используемый для построения массива примеров (и, пожалуйста, внимательно изучите ваши вопросы при публикации). Приведенные примеры должны делать то, что вы им намереваетесь!) – AllenJB

+1

Можем ли мы получить «var_export» исходного массива, пожалуйста? – Charles

ответ

24

Из инструкции:

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

$encodedArray = array_map(utf8_encode, $myArr); 
echo json_encode($encodedArray); 
+0

Спасибо, видел, отлично. Я фактически использовал array_map (htmlentities ... для моей ситуации, но это спасло день. –

+0

Следует отметить, что предложение utf8_encode() обычно не является отличной идеей, так как вслепую предполагает, что входной сигнал ISO-8859-1. вы столкнулись с проблемой, важно сначала выяснить, что ваш набор символов * IS *, и только THEN конвертировать (http://php.net/iconv может помочь со второй частью, если вы НЕ имеете дело с ISO -8859-1). – TML

1

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

{"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

Пожалуйста, проверьте мой вопрос снова, я обновил полный код, так как json_encode работает с остальной частью массива. – Lizard

+0

Итак, это похоже на проблему с 5-м элементом массива. Могу ли я увидеть код для генерации массива? – xil3

+0

его просто поле из базы данных – Lizard

1

Фактически он не возвращает null, http://codepad.org/A34KdUf5.

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

+0

. Пожалуйста, проверьте мой вопрос снова. Я обновил полный код, так как json_encode работает с остальной частью массива. – Lizard

+1

При копировании и вставке вы, вероятно, непреднамеренно помещаете его в форму UTF-8, в то время как исходной строки, вероятно, не было. – devios1

1

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

+0

Пожалуйста, проверьте мой вопрос снова, я обновил полный код, так как json_encode работает с остальным массивом. – Lizard

0

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

Смежные вопросы