Heim >Backend-Entwicklung >PHP-Tutorial >Warum konvertiert die json_encode-Funktion von PHP UTF-8-Zeichenfolgen in hexadezimale Entitäten?

Warum konvertiert die json_encode-Funktion von PHP UTF-8-Zeichenfolgen in hexadezimale Entitäten?

Patricia Arquette
Patricia ArquetteOriginal
2024-11-02 19:32:30446Durchsuche

Why Does PHP's json_encode Function Convert UTF-8 Strings to Hexadecimal Entities?

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!

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