UTF8 nach Singlebyte

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut
HK12
Beiträge: 31
Registriert: Mi 7. Feb 2018, 10:31
OS, Lazarus, FPC: Winux (FPC 3.x)
CPU-Target: xxBit

Re: UTF8 nach Singlebyte

Beitrag von HK12 »

Hi, da ich es nicht mag wenn Fragen offen bleiben, oder nur drunter geschrieben wird "Ah, ich weiß wie es geht" hier was ich nun gemacht habe.

In der DB steht es als UTF_8 drin. Mit dem einfachen Select den ich gemacht hatte gingen die UTF_8 flöten. Ich Caste das nun wie folgt und bekomme einen echten UTF_8 zurück.

CAST(sender_name as BINARY) as sender_name

Ohne diese CAST kommen äöü wie folgt zurück. E4 F6 FC
Mit dem CAST bekomme ich endlich mein richtigen Daten. äöü sind dann C3 A4 C3 B6 C3 BC

Überprüft habe ich es mit RoundCube und Outlook. Ebenfalls habe ich mir die Daten im Header angesehen und die stimmen nun endlich.

Nochmals vielen dank an alle die geholfen haben.
Netten Gruß an alle......

Socke
Lazarusforum e. V.
Beiträge: 3158
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: UTF8 nach Singlebyte

Beitrag von Socke »

HK12 hat geschrieben:
Mi 24. Feb 2021, 12:24
CAST(sender_name as BINARY) as sender_name
Du solltest hier einmal die Collation der Datenbank und der Tabelle sowie deine Verbindungseinstellungen prüfen. So solltest du solche Kunstgriffe vermeiden können.
Alternativ änderst du die Tabellenspalte sender_name von varchar (oder ähnlichem) auf binaray, dann kannst du die Konvertierung durch die Datenbank komplett ausschließen.

Weiterhin weise ich darauf hin, dass MySQL und MariaDB unter der Collation "utf8" kein UTF-8 verstehen. Bei "utf8" werden Zeichen, die in 4 Bytes kodiert sind, einfach abgeschnitten.
Die Korrekte Collation ist utf8mb4.
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

Antworten