PHP-Editor Apple stößt bei Verwendung der Postgres-Datenbank manchmal auf das Problem falscher UTF8-Zeichen nach der Auswahl. In diesem Fall werden in der Datenbank gespeicherte Sonderzeichen möglicherweise als verstümmelte oder falsche Zeichen angezeigt. Die Lösung dieses Problems besteht darin, die korrekte Anzeige von Zeichen sicherzustellen, indem die Datenbank- und Verbindungszeichensätze richtig eingestellt werden. Bei Verwendung einer Postgres-Datenbank können wir dieses Problem lösen, indem wir die Konfigurationsdatei ändern oder den Zeichensatz festlegen, wenn wir eine Verbindung zur Datenbank herstellen. Durch die richtige Einstellung des Zeichensatzes wird sichergestellt, dass wir verschiedene Zeichen korrekt verarbeiten und anzeigen können und die Stabilität und Zuverlässigkeit der Datenbank verbessert wird.
Ich habe eine Datenbanktabelle in Postgres, die E-Mail-Adressen enthält. Eine der Kundinnen hat einen Umlaut (ü) in ihrer E-Mail-Adresse. Das sollte kein Problem sein, aber irgendwie enthielt der String in go die falsche Bytesequenz (es war e3bc statt c3bc), was mir später eine Menge Probleme bereitete.
Ich verbinde mich über client_encoding=utf8
mit der Datenbank und die Datenbank ist auf utf8 eingestellt. Wenn ich den folgenden Befehl ausführe, kann ich sehen, dass die Bytereihenfolge in der Datenbank wie erwartet ist:
SELECT encode("email"::bytea, 'hex') FROM participants WHERE email like 'XXXXXX%'; encode ---------------------------------------------- c3bc
(Der Rest der Daten ist ausgeblendet)
Ich verwende das Datenbank-/SQL-Paket und den Postgres-Treiber, um die Daten zu lesen, und wenn ich die Zeichenfolge in go ausdrucke, erhalte ich xxxxxxe3bcxxxxxx, was nicht das ist, was ich erwartet habe (auch hier verstecke ich den Rest der E-Mail mit einem x ).
Ist das ein Fehler oder habe ich etwas falsch verstanden?
Stellen Sie sicher, dass Ihre Datenbank korrekt auf UTF8 eingestellt ist. Beim Erstellen der Datenbank wurde das Gebietsschema korrigiert, was dazu führen konnte, dass LOWER
等 sql 函数出现问题。使用 pg_dropcluster
和 pg_createcluster --encoding=UTF8
die Datenbank neu erstellte.
Das obige ist der detaillierte Inhalt vonFalsche UTF8-Zeichen nach der Auswahl aus Postgres. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!