Heim > Backend-Entwicklung > Golang > Falsche UTF8-Zeichen nach der Auswahl aus Postgres

Falsche UTF8-Zeichen nach der Auswahl aus Postgres

WBOY
Freigeben: 2024-02-12 19:48:09
nach vorne
1223 Leute haben es durchsucht

从 postgres 选择后 UTF8 字符不正确

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.

Frageninhalt

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
Nach dem Login kopieren

(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?

Problemumgehung

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_dropclusterpg_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!

Quelle:stackoverflow.com
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