Heim  >  Artikel  >  Backend-Entwicklung  >  Warum schlägt „json_encode()“ bei bestimmten Kontinentcodes in PHP fehl?

Warum schlägt „json_encode()“ bei bestimmten Kontinentcodes in PHP fehl?

Barbara Streisand
Barbara StreisandOriginal
2024-11-03 23:22:30863Durchsuche

Why Does `json_encode()` Fail with Specific Continent Codes in PHP?

JSON-Kodierungsprobleme mit PHP-Arrays

Frage:

Ich verwende PHPs json_encode( )-Funktion zum Konvertieren von MySQL-Tabellendaten in JSON, aber ich stelle ein seltsames Verhalten fest. Die Funktion kodiert keine Daten für bestimmte Abfragen, insbesondere solche, die Sonderzeichen oder bestimmte Kontinentcodes enthalten.

Code-Snippet:

<code class="php">$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']
    );
}

echo json_encode($orders);</code>

Beobachtung:

  • Der Code kodiert Daten korrekt für den Kontinentcode „AS“.
  • Die Kontinentcodes „EU“, „NA“, „AF“ und andere erzeugen kein JSON Ausgabe.

Problem:

Die Funktion json_encode() erfordert, dass alle eingehenden Daten UTF-8-codiert sind. Sonderzeichen und bestimmte Kontinentcodes werden in der Datenbank oder bei der Datenbearbeitung möglicherweise nicht richtig codiert.

Lösung:

Stellen Sie die UTF-8-Codierung in Ihrer gesamten Webanwendung sicher. Dazu gehört:

  • Festlegen der Datenbankverbindung auf die Verwendung von UTF-8 (z. B. mysqli_set_charset($con, 'UTF-8'))
  • Deklarieren des Headers für die JSON-Antwort ( header('Content-Type: application/json; charset=utf-8');)
  • Überprüfen, ob die PHP-Dateien und die Datenbank UTF-8-Kodierung verwenden (z. B. über Dateikodierung oder Datenbankkonfiguration)

Im RFC4627 heißt es: „JSON-Text MUSS in Unicode kodiert werden. Die Standardkodierung ist UTF-8.“ Durch die Sicherstellung der UTF-8-Kodierung kann json_encode() alle Daten unabhängig von ihrem Inhalt korrekt verarbeiten.

Das obige ist der detaillierte Inhalt vonWarum schlägt „json_encode()“ bei bestimmten Kontinentcodes in PHP fehl?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn