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:
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:
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!