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!