Heim > Artikel > Backend-Entwicklung > Wie dekodiere und kodiere ich JSON mit Unicode-Zeichen in PHP?
PHP-Dekodierung und Kodierung von JSON mit Unicode-Zeichen
Probleme bei der Dekodierung von Unicode-Zeichen
Beim Versuch Beim Dekodieren von JSON, das Unicode-Zeichen enthält, können Probleme auftreten, wenn die Zeichen innerhalb bestimmter Grenzen liegen. Insbesondere dürfen Zeichen wie „“ und „“ nicht in JSON-Strings vorkommen. Darüber hinaus sind Steuerzeichen nicht zulässig.
UTF-8-Kodierung und -Dekodierung
Um dieses Problem zu beheben, können Sie utf8_encode verwenden, um die Dekodierung der Zeichenfolge mit json_decode zu ermöglichen. Dies kann jedoch dazu führen, dass die Zeichen verstümmelt werden. Beispielsweise würde „Odómetro“ in „Odómetro“ umgewandelt.
Neukodierung und Zeichen-Escapezeichen
Bei der Neukodierung des Arrays wird das Zeichen maskiert ASCII, was gemäß der JSON-Spezifikation korrekt ist: „Tag“=>“Odu00f3metro“. Um das Zeichen aufzuheben, können Sie die Option JSON_UNESCAPED_UNICODE für „json_encode“ verwenden. Dies ist jedoch nur in PHP 5.4 oder höher verfügbar.
Alternative Lösung mit Regex
Wenn Sie auf PHP 5.3 beschränkt sind, können Sie eine Regex-basierte Lösung verwenden Lösung:
$json = json_encode($array, JSON_UNESCAPED_SLASHES); // Replace escaped unicode characters with their UTF-8 equivalents $json = preg_replace('/\\u([0-9a-fA-F]{4})/', '&#x;', $json);
Durch die Verwendung des Flags JSON_UNESCAPED_SLASHES verhindern Sie das Schrägstriche () werden nicht in der JSON-Zeichenfolge maskiert. Das Regex-Muster gleicht dann maskierte Unicode-Zeichen (u####) ab und ersetzt sie durch ihre UTF-8-Entsprechungen.
Das obige ist der detaillierte Inhalt vonWie dekodiere und kodiere ich JSON mit Unicode-Zeichen in PHP?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!