Umgang mit UTF-8-Zeichenfolgen in PHP: json_encode und JSON_UNESCAPED_UNICODE
In PHP-Skripten mit mehrsprachigen Inhalten kann das Verhalten der json_encode-Funktion Fragen aufwerfen. Es wurde beobachtet, dass Unicode-Zeichen häufig als hexadezimale Einheiten enden.
Beispiel:
Eingabe: echo $text;
Ausgabe: „База данни грешка.“
Eingabe: json_encode($text);
Ausgabe: „u0411u0430u0437u0430 u0434u0430u043du043du0438 0433u0440u0435u0448u043au0430.“
Grundlegendes zur Konvertierung
Standardmäßig kodiert json_encode Unicode-Zeichenfolgen als hexadezimale Entitäten. Dies ist eine gängige Praxis in JSON, um die Kompatibilität mit älteren Systemen sicherzustellen, die Unicode möglicherweise nicht unterstützen.
Lösung: JSON_UNESCAPED_UNICODE
In PHP 5.4.0 eingeführt, das JSON_UNESCAPED_UNICODE-Flag ermöglicht es Ihnen, diese Konvertierung zu umgehen. Wenn angegeben, weist es json_encode an, UTF-8-Zeichen direkt auszugeben.
Verwendung:
<code class="php">json_encode($text, JSON_UNESCAPED_UNICODE);</code>
Mit diesem Flag behält die Ausgabe ihre ursprüngliche Unicode-Zeichenkodierung bei :
<code class="php">\u0411\u0430\u0437\u0430 \u0434\u0430\u043d\u043d\u0438 \u0433\u0440\u0435\u0448\u043a\u0430.</code>
Durch die Verwendung des Flags JSON_UNESCAPED_UNICODE können Sie die ursprünglichen Unicode-Zeichen in Ihrer JSON-Ausgabe beibehalten. Dies ist besonders nützlich, wenn Sie mit mehrsprachigen Inhalten arbeiten oder in Systeme integrieren, die echte Unicode-Unterstützung erfordern.
Das obige ist der detaillierte Inhalt vonWie kann ich verhindern, dass Unicode-Zeichen als hexadezimale Entitäten codiert werden, wenn ich json_encode in PHP verwende?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!