Heim  >  Artikel  >  Backend-Entwicklung  >  Warum gibt „json_encode()“ Nullwerte für Eigenschaften mit einfachen Anführungszeichen zurück?

Warum gibt „json_encode()“ Nullwerte für Eigenschaften mit einfachen Anführungszeichen zurück?

Susan Sarandon
Susan SarandonOriginal
2024-11-02 00:04:29542Durchsuche

Why is `json_encode()` returning null values for properties with single quotes?

JSON-Kodierungsfehler: Diskrepanzen mit einfachen Anführungszeichen beheben

Entwickler stoßen häufig auf stille Fehler, wenn sie versuchen, Objekte mit der json_encode()-Funktion von PHP zu kodieren. In diesem Zusammenhang stieß ein Benutzer auf ein Problem, bei dem die Codierung eines stdClass-Objekts zu Nullwerten für Eigenschaften führte, die einfache Anführungszeichen enthielten.

Analyse

Bei der Untersuchung des Problems stellte sich heraus, dass dies der Fall war entdeckte, dass die zugrunde liegende Ursache die Unfähigkeit von json_encode() war, Zeichen außerhalb des ASCII-Bereichs korrekt zu verarbeiten. Besonders problematisch war das einfache Anführungszeichen, das in einem Hex-Dump als x92 dargestellt wird.

Lösung

Um das Problem zu beheben, muss unbedingt sichergestellt werden, dass die Daten korrekt sind kodiert ist ordnungsgemäß in UTF-8 kodiert. Dies kann erreicht werden, indem die MySQL-Verbindungskodierung abhängig von der verwendeten API entsprechend eingestellt wird:

  • Alte (veraltete) API: mysql_set_charset("utf8")
  • mysqli: mysqli_set_charset("utf8")
  • PDO: Fügen Sie den Zeichensatzparameter zur Verbindungszeichenfolge hinzu oder führen Sie SET NAMES utf8 aus, wenn Sie PHP 5.3.6 oder früher verwenden .

Alternativer Ansatz

Eine alternative Lösung kann darin bestehen, utf8_decode() zu verwenden, um den Text in ein Format zu konvertieren, das korrekt codiert ist. Dies führt jedoch möglicherweise nicht immer zum gewünschten Ergebnis, da davon ausgegangen wird, dass der Text in ISO-8859-1 codiert ist.

Das obige ist der detaillierte Inhalt vonWarum gibt „json_encode()“ Nullwerte für Eigenschaften mit einfachen Anführungszeichen zurück?. 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