2010-07-05 30 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 Buys Procesamiento de SiC </a> </div> "" 2010-06-21 /-Capital-compra nordic-SIC-procesamiento </div>", "peHUB medios de comunicación", "Negocios", "completó", nula, " Administrador, China, Frog Capital, Alemania, Italia, Iyad Omari, Fabricación, Noruega, PEHub Media, Fabricación de obleas fotovoltaicas, Energía renovable, Semiconductor, Estados Unidos]]}php json_encode volver nula

Nota del nulo en el medio de la cadena después de completado

¿Por qué es esto, lo de escape/manipulación Qué necesito para llevar a cabo con el fin de codificar esto?

He tratado, addslashes

+0

funciona para mí. Comprueba tu configuración PHP, creo que las cosas json_ * se pueden deshabilitar. –

+0

Indique el código PHP utilizado para construir la matriz de ejemplo (y compruebe cuidadosamente sus preguntas al publicar; los ejemplos proporcionados deben hacer lo que usted desea) – AllenJB

+1

¿Podemos obtener una 'var_export' de la matriz de origen, por favor? – Charles

Respuesta

24

Del manual:

Tenga en cuenta que si se intenta codificar una matriz que contiene los valores no UTF, obtendrá los valores nulos en el resultantes cadena JSON. Puede lotes a codificar todos los elementos de una matriz con la función array_map:

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

Gracias seengee, perfecto. De hecho, utilicé array_map (htmlentities ... para mi situación, pero esto me salvó el día. –

+0

Cabe señalar que la sugerencia de utf8_encode() no suele ser una gran idea, ya que supone ciegamente que la entrada es ISO-8859-1. usted está enfrentando el problema, es importante que primero descubra cuál es el conjunto de caracteres * IS *, y solo THEN convert (http://php.net/iconv puede ayudar con la segunda parte si NO está tratando con ISO -8859-1). – TML

1

Sólo traté de ese mismo código exacto, y devolvió el siguiente:

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

¿Qué versión de PHP que se ejecuta? ¿Y esto es de su servidor local o está ejecutando esto en un cuadro remoto?

+0

Por favor revise mi pregunta nuevamente, la he actualizado con el código completo, ya que json_encode está trabajando con rest of array. – Lizard

+0

Por lo tanto, parece un problema con el quinto elemento de la matriz. ¿Puedo ver el código para la generación de la matriz? – xil3

+0

es solo un campo de una base de datos – Lizard

1

En realidad, no devuelve nulo, http://codepad.org/A34KdUf5.

Quizás su versión de PHP no sea compatible con json_encode().

+0

Por favor revise mi pregunta otra vez que he actualizado con el código completo, ya que json_encode está trabajando con el resto de la matriz. – Lizard

+1

Al copiar y pegar, probablemente inadvertidamente lo puso en forma UTF-8, mientras que la cadena original probablemente no lo estaba. – devios1

1

Funciona para mí en 5.2.13. Asegúrese de estar utilizando al menos PHP 5.2.0 y PHP no fue compilado con --disable-json. También es posible que desee verificar que la notificación de errores (y/o el registro) esté habilitada.

+0

Por favor revise mi pregunta nuevamente, la he actualizado con el código completo, ya que json_encode está trabajando con el resto de la matriz. – Lizard

0

La forma más simple es $store_name = utf8_encode(name_of_varaible) pero por favor asegúrese de que su juego de caracteres es ISO-8859-1.

Cuestiones relacionadas