Heim  >  Artikel  >  Backend-Entwicklung  >  Wie kodiere ich Nicht-ASCII-Zeichen in JSON mit UTF-8 unter Verwendung von „json_encode“ von PHP?

Wie kodiere ich Nicht-ASCII-Zeichen in JSON mit UTF-8 unter Verwendung von „json_encode“ von PHP?

Linda Hamilton
Linda HamiltonOriginal
2024-10-27 00:15:02149Durchsuche

How to Encode Non-ASCII Characters in JSON with UTF-8 Using PHP's `json_encode`?

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!

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