Heim >Backend-Entwicklung >PHP-Tutorial >Warum werden spezielle Unicode-Zeichen nach der JSON-Kodierung verzerrt angezeigt?
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!