2016-11-21 5 views
1

ich habe daten in text-datei, die ich laden array reihenweise, aber kürzlich habe ich festgestellt, dass wenn "μ" in daten kommen dann json_encode retrun leere antwort, und wenn ich "μ" aus daten dann entfernen json_encode Funktion Arbeitphp json_encode bug patch

ich habe pHP-Version 5.5.3

$dat = array("0"=>"hello","1"=>"world"); 
echo json_encode($dat); // work 

$data = array("0"=>"hello","1"=>"180.00 10µH"); 
echo json_encode($data); // blank response .. 

i für json_enocde Funktion auf github pHP-Seite gesucht, aber es ist alles in C,

so eine Ahnung, wie diese Funktion patchen

+0

Oh ..... Sie haben Recht. –

+0

Probieren Sie die Option 'JSON_ERROR_CTRL_CHAR' –

+1

Versuchen Sie dies: http://StackOverflow.com/Questions/6606713/JSON-encode-non-utf-8-strings – barudo

Antwort

2

Verwenden Sie den folgenden Code ein:

function utf8_converter($array) { 
    array_walk_recursive($array, function(&$item, $key) { 
     if (!mb_detect_encoding($item, 'utf-8', true)) { 
      $item = utf8_encode($item); 
     } 
    }); 

    return $array; 
} 

$data = array("0"=>"hello","1"=>"180.00 10µH"); 
$data = utf8_converter($data); 
echo json_encode($data, JSON_PARTIAL_OUTPUT_ON_ERROR); 
+0

Ihre Code-Ausgabe: '[" Hallo "," 180.00 10 \ u00b5H "]'. Beachten Sie, dass das 'μ' in entsprechende Sonderzeichen umgewandelt wird (' \ u00b5'). –

+0

@BhavikShah ja, richtig. Es wird es tun. Aber wann immer du es mit json_decode zurückkonvertierst, kommt es zurück zu seiner Ursprungsform. Also mach dir keine Sorgen. – KinjalMistry

+0

bekomme Fehler utf8_encode() erwartet Parameter 1 als String, Array in Zeile # – user889030

0

Try this:

$dat = array("0"=>"hello","1"=>"world"); 
echo json_encode($dat); // work 

$data = array("0"=>"hello","1"=>"180.00 10µH"); 
echo json_encode($data, JSON_UNESCAPED_UNICODE); 

Beispiel: https://ideone.com/cYDf8Y

+0

bekomme ich leere Antwort, vielleicht weil meine letzte große Array multidimensional ist – user889030