Heim >Backend-Entwicklung >PHP-Tutorial >Wie kodiere ich JSON in UTF-8, ohne Unicode-Zeichen in PHP zu maskieren?

Wie kodiere ich JSON in UTF-8, ohne Unicode-Zeichen in PHP zu maskieren?

Linda Hamilton
Linda HamiltonOriginal
2024-10-31 03:42:30325Durchsuche

How to Encode JSON in UTF-8 Without Escaping Unicode Characters in PHP?

So kodieren Sie JSON in UTF-8, ohne Unicode-Zeichen zu maskieren

In PHP konvertiert die Funktion json_encode() Werte in JSON-Zeichenfolgen von Standardmäßig werden Unicode-Zeichen jedoch in ihre Unicode-Codepunktdarstellung maskiert. Dies kann in bestimmten Szenarien unerwünscht sein, in denen die Ausgabe UTF-8-Kodierung anstelle von Unicode-Kodierungen erfordert.

Betrachten Sie das folgende Beispiel:

<code class="php">$arr = ['a' => 'á'];
echo json_encode($arr);</code>

Die erwartete Ausgabe ist „a“: „á ", aber das tatsächliche Ergebnis ist {"a":u00e1"}. Dies liegt daran, dass die Funktion json_encode() das Zeichen „á“ in ihre Unicode-Codepunktdarstellung codiert hat, die „u00e1“ ist.

Lösung:

Während dort In PHP-Versionen vor 5.4 gibt es keine integrierte Option zum Deaktivieren der Unicode-Escape-Funktion in json_encode(). Es gibt einige Problemumgehungen, um dies zu erreichen:

  1. Rollen Sie Ihren eigenen JSON-Encoder: Erstellen Sie einen benutzerdefinierten JSON-Encoder, der keine Nicht-ASCII-Zeichen codiert.
  2. Verwenden Sie den JSON-Encoder von Pear: Verwenden Sie den Pear-JSON-Encoder und entfernen Sie die Zeilen 349 bis 433, die für das Unicode-Escape verantwortlich sind .
  3. PHP 5.4 verwenden: In PHP 5.4 und späteren Versionen stellt die Funktion json_encode() eine JSON_UNESCAPED_UNICODE-Option bereit, die eine einfache Ausgabe ohne Unicode-Escape ermöglicht. Hier ist ein Beispiel für die Verwendung dieser Option:
<code class="php"><?php
header('Content-Type: application/json');
$arr = ['a' => 'á'];
echo json_encode($arr, JSON_UNESCAPED_UNICODE);
?></code>

Dadurch wird die gewünschte JSON-Zeichenfolge ausgegeben: „a“: „á“.

Das obige ist der detaillierte Inhalt vonWie kodiere ich JSON in UTF-8, ohne Unicode-Zeichen in PHP zu maskieren?. 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