Heim >Backend-Entwicklung >PHP-Tutorial >Wie gehen Sie mit Unicode-Zeichen in PHP um, wenn Sie JSON-Daten dekodieren und kodieren?

Wie gehen Sie mit Unicode-Zeichen in PHP um, wenn Sie JSON-Daten dekodieren und kodieren?

Barbara Streisand
Barbara StreisandOriginal
2024-11-03 13:26:02689Durchsuche

How do you handle Unicode characters in PHP when decoding and encoding JSON data?

JSON mit Unicode-Zeichen in PHP dekodieren und kodieren

Bei der Arbeit mit JSON-Daten, die Unicode-Zeichen enthalten, ist es wichtig, die Zeichenintegrität während der Dekodierung zu wahren und Kodierung. In PHP kann der Umgang mit Unicode-Zeichen mehrere Herausforderungen mit sich bringen.

JSON mit Unicode-Zeichen dekodieren

Standardmäßig erwartet die json_decode()-Funktion von PHP, dass JSON-Zeichenfolgen UTF-8 sind codiert. Wenn Unicode-Zeichen nicht in UTF-8 kodiert sind, werden sie nicht korrekt dekodiert. Um dieses Problem zu beheben, verwenden Sie utf8_decode(), bevor Sie die JSON-Zeichenfolge dekodieren:

<code class="php">$json = '{"Tag":"Odómetro"}';
$decoded = json_decode(utf8_decode($json));</code>

JSON mit Unicode-Zeichen kodieren

Nach dem Ändern der JSON-Daten ist eine Kodierung erforderlich es zurück in einen JSON-String. Standardmäßig maskiert json_encode() Unicode-Zeichen, um den JSON-Standards zu entsprechen. Um zu verhindern, dass Unicode-Zeichen maskiert werden, verwenden Sie das Flag JSON_UNESCAPED_UNICODE:

<code class="php">$encoded = json_encode($decoded, JSON_UNESCAPED_UNICODE);</code>

Encapsing codierter Unicode-Zeichen aufheben

Wenn Sie codierte Unicode-Zeichen demaskieren müssen, können Sie html_entity_decode verwenden ()-Funktion:

<code class="php">$unescaped = html_entity_decode($encoded);</code>

PHP-Versionen

Beachten Sie, dass das JSON_UNESCAPED_UNICODE-Flag nur in PHP-Version 5.4 und höher verfügbar ist. In früheren Versionen können Sie einen regulären Ausdruck verwenden, um nach Unicode-Zeichen zu suchen und deren Escapezeichen aufzuheben:

<code class="php">$regex = '/\\u([0-9a-fA-F]{4})/';
$unescaped = preg_replace($regex, '&#x\1;', $encoded);</code>

Das obige ist der detaillierte Inhalt vonWie gehen Sie mit Unicode-Zeichen in PHP um, wenn Sie JSON-Daten dekodieren und kodieren?. 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