Hallo,

neben einigen anderen Datenbanksystemen sind wir derzeit für eine neue Software auch MySQL am testen. In diesem Zusammenhang ist mir aufgefallen, dass sämtliche Rückgabewerte im Recordset grundsätzlich entweder keine oder eine falsche Codierung aufweisen.

Auf dem Server sind sämtliche Einstellungen auf UTF-8 gesetzt (für Verbindung, Datenbank, Tabelle, Kollation usw.). Die eingespeicherten Daten werden über Sequel Pro (ein Cocoa MySQL Verwaltungsprogramm) auch korrekt mit Umlauten dargestellt, also wohl auch korrekt eingespeichert.

Innerhalb von Realbasic aber werden die Umlaute nicht bzw. falsch dargestellt, wenn man den Wert so ausliest:

text = rs.Field("Feldname").StringValue

Wenn man die Kodierung explizit vorgibt, funktioniert es:

text = rs.Field("Feldname").StringValue.DefineEncoding(Encodings.UTF8)

Kann die Codierung nicht einmalig an einer bestimmten Stelle (z.B. beim Programmstart) vorgegeben werden? Dort wird beispielsweise auch "SET names 'utf8'" ausgeführt, was aber wohl keine Auswirkung beim auslesen hat.

--
Michael Kagerbauer
http://rbcoder.de

Antwort per Email an