Heim >Backend-Entwicklung >PHP-Tutorial >Wie kodiere ich Nicht-ASCII-Zeichen in JSON mit UTF-8 unter Verwendung von „json_encode' von PHP?
So geben Sie PHP json_encode mit UTF-8-Kodierung anstelle von Unicode zurück
Bei Verwendung der json_encode-Funktion von PHP standardmäßig Nicht-ASCII-Zeichen sind im Unicode-Format kodiert. Dies führt zu einer JSON-Antwort mit Escape-Sequenzen wie „u00e1“ anstelle von UTF-8-codierten Zeichen wie „á“.
Nehmen Sie dieses Beispiel:
<code class="php">$arr = array('a' => 'á'); echo json_encode($arr);</code>
Die Ausgabe wäre:
<code class="json">{"a":"\u00e1"}</code>
Um dieses Problem zu beheben und die JSON-Antwort mit UTF-8-codierten Zeichen zurückzugeben, können Sie die folgenden Ansätze verwenden:
PHP 5.4:
Ab PHP 5.4 bietet json_encode die Option JSON_UNESCAPED_UNICODE. Durch Festlegen dieser Option werden Nicht-ASCII-Zeichen einfach UTF-8-codiert, ohne Escape-Sequenzen.
<code class="php">echo json_encode($arr, JSON_UNESCAPED_UNICODE);</code>
Ältere PHP-Versionen:
Für Versionen vor PHP 5.4 können Sie Ihren eigenen JSON-Encoder implementieren, der die Codierung von Nicht-ASCII-Zeichen weglässt. Alternativ können Sie den JSON-Encoder von Pear verwenden und die Zeilen 349 bis 433 aus der Codierungsfunktion entfernen.
Bitte beachten Sie, dass der Unterschied zwischen {"a":u00e1"} und {"a":á"} liegt lediglich daran, wie sie in der JSON-Syntax geschrieben sind. Beide Darstellungen werden von JSON-Dekodierern in denselben Unicode-Wert dekodiert.
Das obige ist der detaillierte Inhalt vonWie kodiere ich Nicht-ASCII-Zeichen in JSON mit UTF-8 unter Verwendung von „json_encode' von PHP?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!