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