Heim >Backend-Entwicklung >PHP-Tutorial >Warum werden spezielle Unicode-Zeichen nach der JSON-Kodierung verzerrt angezeigt?

Warum werden spezielle Unicode-Zeichen nach der JSON-Kodierung verzerrt angezeigt?

Barbara Streisand
Barbara StreisandOriginal
2024-12-10 18:03:17870Durchsuche

Why Do Special Unicode Characters Appear Distorted After JSON Encoding?

Interpretation von „speziellen“ Unicode-Zeichen, die als JSON kodiert sind

Beim Einbinden von „speziellen“ Unicode-Zeichen erscheinen diese nach der Kodierung in JSON oft verzerrt:

echo json_encode(['foo' => '馬']);
// Output: {"foo":"\u99ac"}

Es ist wichtig zu verstehen, warum dies geschieht.

JSON Kodierungsstandard

Die JSON-Kodierung nutzt die String-Literal-Formation ECMAScript (früher bekannt als JavaScript) (Abschnitt 7.8.4). Es ermöglicht die Darstellung von Zeichen als Hexadezimalzahlen mit dem Präfix „u“, gefolgt von vier Hexadezimalziffern, die den Codepunkt darstellen:

"\u99ac"

Diese Darstellung, identisch mit dem String-Literal „馬“, übermittelt denselben Unicode Zeichen, wenn es von einem kompatiblen JSON-Parser analysiert wird.

JSON-Kodierung von PHP Präferenz

Die json_encode-Funktion von PHP codiert häufig Nicht-ASCII-Zeichen mithilfe von „u....“-Escape-Sequenzen. Dies ist zwar optional, erzeugt aber gültiges JSON.

Anpassen der Kodierung

Falls gewünscht, ermöglicht das in PHP 5.4 eingeführte Flag JSON_UNESCAPED_UNICODE eine wörtliche Zeichenkodierung:

echo json_encode(['foo' => '馬'], JSON_UNESCAPED_UNICODE);
// Output: {"foo":"馬"}

Es ist wichtig zu beachten, dass diese Anpassung eher eine Präferenz als eine Notwendigkeit für die Übertragung von Unicode ist Zeichen in JSON.

Das obige ist der detaillierte Inhalt vonWarum werden spezielle Unicode-Zeichen nach der JSON-Kodierung verzerrt angezeigt?. 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