PHP json_encode-Funktion konvertiert UTF-8-Zeichenfolgen in hexadezimale Entitäten: Warum und wie man es auflöst
Die PHP-json_encode-Funktion kann PHP-Variablen codieren in JSON (JavaScript Object Notation) umgewandelt. Beim Umgang mit Unicode-Zeichen in der UTF-8-Codierung konvertiert die Funktion diese jedoch möglicherweise standardmäßig in hexadezimale Entitäten. Dies liegt daran, dass JSON nativ keine UTF-8-Zeichen unterstützt, bei denen es sich um Multibyte-Zeichen handelt, die Nicht-ASCII-Zeichen darstellen.
Warum konvertiert PHP UTF-8-Zeichenfolgen in hexadezimale Entitäten?
Die json_encode-Funktion von PHP verwendet die JSON-Spezifikation, die vorschreibt, dass Unicode-Zeichen, die nicht als ASCII-Zeichen dargestellt werden können, mit hexadezimalen Escape-Sequenzen codiert werden müssen. Dies stellt die Kompatibilität mit älteren Anwendungen und Geräten sicher, die UTF-8 möglicherweise nicht unterstützen.
Beheben des Konvertierungsproblems
Um dieses Problem zu beheben und die Konvertierung von UTF-8 zu vermeiden Um Zeichenfolgen in hexadezimale Entitäten umzuwandeln, hat PHP in Version 5.4.0 die Option JSON_UNESCAPED_UNICODE eingeführt. Diese Option weist json_encode an, Unicode-Codepunkte anstelle von hexadezimalen Escape-Sequenzen für Nicht-ASCII-Zeichen zu verwenden.
Beispiel
Angenommen, Sie haben das folgende PHP-Skript:
Dieser Code gibt die folgende JSON-Zeichenfolge aus, in der die kyrillischen Zeichen als hexadezimale Einheiten codiert sind:
"\u0411\u0430\u0437\u0430 \u0434\u0430\u043d\u043d\u0438 \u0433\u0440\u0435\u0448\u043a\u0430."
Um die UTF-8-Zeichen direkt auszugeben, können Sie die Option JSON_UNESCAPED_UNICODE verwenden:
Dadurch wird die folgende JSON-Zeichenfolge erzeugt, in der die kyrillischen Zeichen mithilfe ihrer Unicode-Codepunkte dargestellt werden:
"База данни грешка."
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3