„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Warum schlägt „json_encode()“ fehl, wenn einfache Anführungszeichen in PHP mit Windows-1252-Kodierung kodiert werden?

Warum schlägt „json_encode()“ fehl, wenn einfache Anführungszeichen in PHP mit Windows-1252-Kodierung kodiert werden?

Veröffentlicht am 12.11.2024
Durchsuche:115

Why Does `json_encode()` Fail When Encoding Single Quotes in PHP with Windows-1252 Encoding?

PHPs json_encode-Fehler mit einfachen Anführungszeichen

In einem Szenario mit einem PHP-stdClass-Objekt ($post) funktioniert die json_encode()-Funktion unerwartet Die Eigenschaft „post_title“ kann nicht codiert werden, was zu einem Nullwert in der JSON-Ausgabe führt. Trotz der offensichtlichen UTF-8-Kodierung der Datenbank scheint es, dass der Datenabrufprozess möglicherweise nicht korrekt konfiguriert ist.

Ursache: Falsche Kodierung

Die JSON-Kodierung Das Problem ist auf eine falsche Codierung des einfachen Anführungszeichens im post_title zurückzuführen. Insbesondere ist das Zeichen in Windows-1252 codiert, was zu einem Hexadezimalwert von 92 führt, was kein gültiges UTF-8-Zeichen ist.

Lösung: Datenbankverbindungscodierung festlegen

Um dieses Problem zu beheben, muss die Datenbankverbindungskodierung auf UTF-8 eingestellt werden. Die verwendete Methode hängt von der verwendeten API ab:

  • MySQL: mysql_set_charset("utf8")
  • MySQLi: mysqli_set_charset("utf8")
  • PDO (PHP > = 5.3.6): Zeichensatzparameter in Verbindungszeichenfolge
  • PDO (frühere Versionen): SET NAMES utf8

Zusätzliche Überlegungen

Es ist wichtig zu beachten, dass durch das Festlegen der Verbindungskodierung sichergestellt wird, dass aus der Datenbank abgerufene Daten ordnungsgemäß in UTF-8 kodiert werden. Wenn die Daten jedoch in einer falschen Kodierung gespeichert sind, wie z. B. Windows-1252, kann eine manuelle Konvertierung über utf8_encode() oder auf andere Weise erforderlich sein.

Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3