php json_encode funktioniert teilweise nicht mit Arrays

Lesezeit: 3 Minuten

Ich habe einen PHP-Code, der DB-Tabellendaten in JSON codieren muss. Also habe ich json_encode() verwendet.

Ich verwende die hier angegebenen Tabellen – http://www.geekality.net/2011/08/21/country-names-continent-names-and-iso-3166-codes-for-mysql/

Das Verhalten dieses Codes scheint für verschiedene Eingaben unterschiedlich zu sein.

Die Abfrage – $query = "SELECT * FROM countries "; gibt keine JSON-Werte zurück.

Die Abfrage –$query = "SELECT * FROM countries where continent_code="AS""; gibt json-Werte korrekt zurück.

wohingegen,$query = "SELECT * FROM countries where continent_code="EU""; gibt auch nichts zurück.

Ebenso funktionierten ‘NA’, ‘AF’ nicht und andere funktionierten perfekt.

Ich bin seltsam von diesem Verhalten von PHPs json_encode.

Das ist mein Code.

<?php
$con=mysqli_connect('localhost','xxxx','xxxxx','joomla30');
// Check connection
if (mysqli_connect_errno())
  {
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
  }

$result = mysqli_query($con,"SELECT * FROM countries where continent_code="EU"") or die (mysqli_error($con));

while ($row = mysqli_fetch_array($result, MYSQLI_ASSOC)) {
      $orders[] = array(
          'CountryCode' => $row['code'],
          'CountryName' => $row['name']
          );
  }
//print_r($orders);

echo json_encode($orders);

mysqli_close($con);
?>

Bis zur vorherigen Zeile von json_encode werden die Daten übertragen. Ich denke also, es ist ein Problem mit der JSON-Codierung.

Ich habe versucht, es mit herauszufinden print_r($orders);.
Ich habe die folgende Ausgabe davon.

Wenn ich nach ‘EU’ versuche, bekomme ich dieses Array.

Array ( [0] => Array ( [CountryCode] => AD [CountryName] => Andorra ) 
[1] => Array ( [CountryCode] => AL [CountryName] => Albania ) 
[2] => Array ( [CountryCode] => AT [CountryName] => Austria ) 
[3] => Array ( [CountryCode] => AX [CountryName] => Åland Islands )...

Wenn ich nach ‘AS’ versuche, bekomme ich dieses Array.

Array ( [0] => Array ( [CountryCode] => AE [CountryName] => United Arab Emirates ) 
[1] => Array ( [CountryCode] => AF [CountryName] => Afghanistan) 
[2] => Array ( [CountryCode] => AM [CountryName] => Armenia) 
[3] => Array ( [CountryCode] => AZ [CountryName] => Azerbaijan)...

Beide Arrays sehen gleich aus, richtig … Aber Json_encode funktioniert nur auf ‘AS’ und nicht auf ‘EU’.

Weiß jemand, wie man dieses Problem löst? Wenn ja, sagen Sie es mir bitte..

  • Ich denke, das Problem sind die “Åland-Inseln”, weil json_encode Probleme damit hat, dass das “Å” ein seltsamer Unicode ist. Versuchen Sie, Ihre mysql_connection auf UTF-8 zu setzen

    – Andresch Serj

    15. November 2013 um 11:12 Uhr

php json encode funktioniert teilweise nicht mit Arrays
Wayne Whitty

Sie sollten sicherstellen, dass jede Komponente Ihrer Webanwendung UTF-8 verwendet. Diese Antwort auf eine andere Frage wird Ihnen sagen, wie Sie dies tun können. Wenn du lesen Sie dies aus RFC4627:

Kodierung: JSON-Text MUSS in Unicode kodiert werden. Die Standardcodierung ist UTF-8.

Die Funktion json_encode erfordert, dass alle eingehenden Daten UTF-8-codiert sind. Deshalb sind Saiten wie z Åland Islands bereiten dir wahrscheinlich Probleme.

  • Vielen Dank für Ihre schnelle Antwort innerhalb von 2 Minuten. Ich fügte hinzu mysqli_set_charset($con, 'utf8'); Es hat perfekt funktioniert…

    – vsriram92

    15. November 2013 um 11:23 Uhr


php json encode funktioniert teilweise nicht mit Arrays
verzeihen

Hier nur eine zufällige Vermutung: json_encode erfordert alle Daten, die Sie eingeben UTF-8 kodiert und es wird sonst scheitern. In diesen Ländern, in denen dies fehlschlägt, haben Sie wahrscheinlich Daten, die Nicht-ASCII-Zeichen enthalten. Reines ASCII ist zufällig mit UTF-8 kompatibel, Nicht-ASCII-Zeichen, auf die Sie besonders achten müssen. Sehen Sie sich UTF-8 vollständig an, um zu erfahren, wie Sie UTF-8-codierte Daten aus Ihrer Datenbank abrufen (verwenden Sie mysqli_set_charset).

  • Danke, ich habe gerade den folgenden Code hinzugefügt $db->set_charset("utf8"); in meiner vorbereiteten Anweisung und funktionieren perfekt

    Benutzer4237179

    16. März 2016 um 0:17 Uhr


915020cookie-checkphp json_encode funktioniert teilweise nicht mit Arrays

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy