Heim > Backend-Entwicklung > PHP-Problem > Was tun, wenn PHP verstümmelte JSON-Daten erhält?

Was tun, wenn PHP verstümmelte JSON-Daten erhält?

PHPz
Freigeben: 2023-04-19 09:45:39
Original
1190 Leute haben es durchsucht

Mit der Entwicklung der Internettechnologie boomt die Entwicklung von Websites und mobilen Anwendungen von Jahr zu Jahr, und die Dateninteraktion ist zu einem wichtigen Bestandteil davon geworden. JSON (JavaScript Object Notation, JavaScript Object Notation) hat sich aufgrund seiner Vorteile in Bezug auf Lesbarkeit, Flexibilität und Skalierbarkeit zu einem der beliebtesten Datenformate im Front-End- und Back-End-Interaktionsprozess entwickelt. Beim Abrufen von JSON-Daten in PHP kann es zu verstümmelten Zeichen kommen. In diesem Artikel wird die Lösung zum Abrufen verstümmelter JSON-Daten in PHP vorgestellt.

  1. UTF-8-Kodierung

UTF-8-Kodierung ist derzeit das am weitesten verbreitete Zeichenkodierungsschema im Internet und unterstützt die Textdarstellung in den meisten Sprachen. Es gibt auch entsprechende Zeichenkodierungsfunktionen in PHP. Beispielsweise kann die Funktion mb_convert_encoding() einen String in eine bestimmte Kodierung konvertieren. Wenn Sie JSON-Daten von außen abrufen und in ein PHP-Objekt konvertieren möchten, müssen Sie dessen Inhalt zunächst in die UTF-8-Kodierung konvertieren.

Das Folgende ist ein Beispielcode zum Abrufen von JSON-Daten:

$json_data = file_get_contents('http://example.com/data.json');
$decoded_data = json_decode($json_data);
Nach dem Login kopieren

In diesem Code verwenden wir die Funktion file_get_contents(), um den Inhalt der Remote-JSON-Datei abzurufen und ihn in der Variablen $json_data zu speichern. Anschließend verwenden Sie die Funktion json_decode(), um die JSON-Daten in ein PHP-Objekt zu konvertieren. Wenn die JSON-Daten jedoch nicht UTF-8-codierte Zeichen enthalten, können während des Konvertierungsvorgangs verstümmelte Zeichen auftreten. Wir können das Codierungsformat angeben, bevor wir die Daten erhalten, wie zum Beispiel:

$json_data = file_get_contents('http://example.com/data.json');
$json_data = mb_convert_encoding($json_data, 'UTF-8');
$decoded_data = json_decode($json_data);
Nach dem Login kopieren

In der zweiten Codezeile rufen wir die Funktion mb_convert_encoding() auf, um die Daten in die UTF-8-Codierung zu konvertieren. Auf diese Weise können verstümmelte Zeichen durch inkonsistente Kodierung bei der Konvertierung in PHP-Objekte vermieden werden.

  1. HTTP-Header festlegen

Eine weitere Möglichkeit, das Problem der von PHP erhaltenen verstümmelten JSON-Daten zu lösen, besteht darin, das Zeichenkodierungsformat durch Festlegen des HTTP-Header-Inhalts anzugeben. Verwenden Sie die Funktion header(), um HTTP-Header-Informationen festzulegen, einschließlich Content-Type, Content-Disposition usw. Das Feld „Content-Type“ wird verwendet, um den Typ des HTTP-Nachrichtentexts anzugeben. Sein Wertformat ist „primärer Typ/sekundärer Typ“. Während des JSON-Datenübertragungsprozesses sollte es auf „application/json“ eingestellt werden. Gleichzeitig müssen Sie in Content-Type auch Anweisungen zur Zeichenkodierung hinzufügen, wie zum Beispiel:

header('Content-Type: application/json; charset=utf-8');
Nach dem Login kopieren

Auf diese Weise wird die Kodierung beim Abrufen von JSON-Daten vom Server automatisch basierend auf den HTTP-Header-Informationen ohne verstümmelte Zeichen konvertiert .

  1. Option JSON_UNESCAPED_UNICODE verwenden

Die Option JSON_UNESCAPED_UNICODE kann in PHP 5.4.0 und höher verwendet werden. Es handelt sich um eine Option, die Unicode-Zeichen beim Konvertieren von JSON-Daten nicht maskiert. Da in JSON Nicht-ASCII-Zeichen in Unicode codiert werden müssen, werden die Daten dadurch ausführlicher und schwer lesbar. Dieses Problem kann vermieden werden, wenn Sie die Option JSON_UNESCAPED_UNICODE verwenden. Der Beispielcode lautet wie folgt:

$json_data = file_get_contents('http://example.com/data.json');
$decoded_data = json_decode($json_data, false, 512, JSON_UNESCAPED_UNICODE);
Nach dem Login kopieren

In der dritten Codezeile übergeben wir die Option JSON_UNESCAPED_UNICODE in der Funktion json_decode(), um anzugeben, dass Unicode-Zeichen während des Konvertierungsprozesses nicht maskiert werden.

Zusammenfassung

JSON ist ein leichtes Datenaustauschformat. Es bietet die Vorteile einer guten Lesbarkeit und einer hohen Flexibilität und wird häufig im Dateninteraktionsprozess von Websites und mobilen Anwendungen verwendet. Beim Abrufen von JSON-Daten in PHP kann es jedoch zu verstümmelten Zeichen kommen. Dieses Problem kann auf viele Arten gelöst werden, z. B. durch Konvertieren von Zeichenkodierungen, Festlegen von HTTP-Header-Informationen und Verwenden der Option JSON_UNESCAPED_UNICODE. Das ultimative Ziel besteht darin, JSON-Daten korrekt und vollständig in PHP-Objekte umzuwandeln, um die Genauigkeit und Stabilität der Front-End- und Back-End-Dateninteraktion sicherzustellen.

Das obige ist der detaillierte Inhalt vonWas tun, wenn PHP verstümmelte JSON-Daten erhält?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage