Beim Versuch, akzentuierte Zeichen aus einer Datenbank mit latin1_swedish_ci-Kodierung abzurufen und sie mit json_encode() in JSON zu kodieren, Das Ergebnis kann unerwartet sein. Das beabsichtigte Ergebnis, wie zum Beispiel „Abord â Plouffe“, wird in „null“ umgewandelt, wodurch der codierte JSON ungültig wird.
Um dieses Problem zu beheben, ist es notwendig, die abgerufenen Werte vorher explizit in UTF-8 zu codieren Anwenden von json_encode(). Dadurch wird sichergestellt, dass die JSON-Ausgabe die richtigen UTF-8-Zeichen enthält und entsprechend validiert wird. So implementieren Sie diese Lösung:
<code class="php">// Initialize an empty array for the encoded result set $rows = array(); // Iterate over the PHPMyAdmin result set while ($row = mysql_fetch_assoc($result)) { // Apply UTF-8 encoding to each row value $rows[] = array_map('utf8_encode', $row); } // Output the encoded $rows echo json_encode($rows);</code>
In diesem modifizierten Code verwenden wir die Funktion array_map, um utf8_encode auf jedes Element jeder Zeile im Ergebnissatz anzuwenden. Dadurch wird sichergestellt, dass alle Zeichen ordnungsgemäß in UTF-8 codiert werden, bevor json_encode ausgeführt wird. Folglich wird die resultierende JSON-Ausgabe die beabsichtigten Zeichen genau wiedergeben und die akzentuierten Zeichen wie gewünscht beibehalten.
Das obige ist der detaillierte Inhalt vonWarum kann json_encode() Akzentzeichen aus einer MySQL-Datenbank nicht mit Latin1-Kodierung kodieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!