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 darstellbar sind, 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:
<code class="php"><?php $text = "База данни грешка."; echo json_encode($text); ?></code>
Dieser Code gibt die folgende JSON-Zeichenfolge aus, in der die kyrillischen Zeichen als hexadezimale Einheiten codiert sind:
<code class="json">"\u0411\u0430\u0437\u0430 \u0434\u0430\u043d\u043d\u0438 \u0433\u0440\u0435\u0448\u043a\u0430."</code>
Um die UTF-8-Zeichen direkt auszugeben, können Sie die Option JSON_UNESCAPED_UNICODE verwenden:
<code class="php"><?php $text = "База данни грешка."; echo json_encode($text, JSON_UNESCAPED_UNICODE); ?></code>
Dadurch wird die folgende JSON-Zeichenfolge erzeugt, in der die kyrillischen Zeichen mithilfe ihrer Unicode-Codepunkte dargestellt werden:
<code class="json">"База данни грешка."</code>
Das obige ist der detaillierte Inhalt vonWarum konvertiert die json_encode-Funktion von PHP UTF-8-Zeichenfolgen in hexadezimale Entitäten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!