Heim >Backend-Entwicklung >PHP-Tutorial >Wie kodiere und dekodiere ich JSON mit Unicode-Zeichen in PHP?

Wie kodiere und dekodiere ich JSON mit Unicode-Zeichen in PHP?

Barbara Streisand
Barbara StreisandOriginal
2024-10-31 05:01:301007Durchsuche

How to Encode and Decode JSON with Unicode Characters in PHP?

Kodierung und Dekodierung von JSON mit Unicode-Zeichen in PHP

In PHP kann der Umgang mit JSON-Zeichenfolgen, die Unicode-Zeichen enthalten, eine Herausforderung darstellen. In diesem Artikel werden die Probleme behandelt, die häufig beim Dekodieren und Kodieren solcher Zeichenfolgen auftreten.

Dekodieren von Unicode-Zeichen

Beim Dekodieren von JSON mit Unicode-Zeichen können Probleme auftreten, wenn die Zeichen uncodiert sind nicht richtig codiert. Die JSON-Spezifikation erlaubt jedes Unicode-Zeichen mit Ausnahme von doppelten Anführungszeichen, Backslashes und Steuerzeichen. Bestimmte Unicode-Zeichen werden jedoch möglicherweise in Python oder anderen Programmiersprachen nicht korrekt dekodiert.

Codieren von Unicode-Zeichen

Beim Codieren von JSON mit Unicode-Zeichen kann das Ergebnis mit codiert werden maskierte Unicode-Sequenzen, was gemäß der JSON-Spezifikation gültig ist. Möglicherweise möchten Sie jedoch die ursprünglichen Unicode-Zeichen in ihrer nicht maskierten Form beibehalten.

Verwendung der Option unescaped_unicode

PHP 5.4 führte die Option JSON_UNESCAPED_UNICODE für json_encode() ein, die Folgendes bereitstellt die Möglichkeit, Unicode-Zeichen zu kodieren, ohne sie zu maskieren. Wenn Sie jedoch PHP 5.3 verwenden, ist diese Option nicht verfügbar.

Alternative Lösung für PHP 5.3

Für PHP 5.3 können Sie eine auf regulären Ausdrücken basierende Lösung verwenden Ansatz, um die codierten Unicode-Sequenzen zu entkommen. Eine Möglichkeit, dies zu tun, ist:

<code class="php">$pattern = '/"\\u([0-9a-fA-F]{4})"/';
$replaced = preg_replace($pattern, '"\u"', $encodedJson);</code>

Dieser reguläre Ausdruck sucht nach maskierten Unicode-Sequenzen in der Form „uXXXX“ und ersetzt sie durch das nicht maskierte Unicode-Zeichen.

Beispiel Code

Um eine JSON-Zeichenfolge mit Unicode-Zeichen zu kodieren und diese während der Dekodierung zu entfernen, können Sie den folgenden Code verwenden:

<code class="php">$data = ['Tag' => 'Odómetro'];
$encodedJson = json_encode($data, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES);
$decodedData = json_decode($encodedJson, true);

print_r($decodedData); // Output: [Tag] => Odómetro</code>

Das obige ist der detaillierte Inhalt vonWie kodiere und dekodiere ich JSON mit Unicode-Zeichen in 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