MySQL CharacterSet festlegen

Hallo,
in meiner Lösung tausche ich Daten zwischen der lokalen SQLite und einer MySQL Datenbank aus.
Ich bekomme es einfach nicht hin, dass das bei MySQL CharcterSet auf UTF8 läuft. Entsprechend habe ich Probleme mit
bestimmten Zeichen. Umlaute funktionieren, dass €-Zeichen aber nicht.

Schau ich die Daten im Debugger an, ist das Encoding im RecordSet immer NIL.

Das ist mein Code zu Anmeldung:

dim tmpDB as new MySQLCommunityServer
tmpDB.Host = DBHost
tmpDB.Port = 3306
tmpDB.UserName = DBUser
tmpDB.Password = DBPassword
tmpDB.DatabaseName = DBName

If tmpDB.Connect Then
tmpDB.SQLExecute(“set names utf8 collate utf8_general_ci”)
tmpDB.SQLExecute(“SET CHARSET ‘utf8’”)
end if

Ich habe schon alle möglichen Befehle versucht, ohne jeden Erfolg. Das Encoding im Record Set bleibt immer NIL.

Hat jemand eine Idee wo ich noch was ändern kann?

Viele Grüße
Andreas

Probier mal

StringFromDB=DefineEncoding(Rs.field(“SomeField”).stringvalue,Encodings.UTF8)

Das Xojo Plugin liefert alle strings ohne encoding. Du musst also ConvertEncoding nehmen für alle strings Richtung Datenbank und dann defineEncoding für alle zurück. Plus das set names, damit die Datenbankverbindung UTF-8 macht.

Beim MBS SQL Plugin geht das automatisch, da wir die Unicode API nehmen und nie so Probleme haben.

Danke für die Antworten. Da hätte ich lange suchen können…

Doch noch eine Frage, den so ganz tut’s noch nicht.
Wenn ich mit ConvertEncoding Daten auf die MySQL Datenbank schreibe, welches Coding gebe ich dann an?

UTF8 macht keinen Sinn, da das Coding in der lokalen Datenbank ja schon UTF8 ist.
Es funktioniert auch mit UTF8 nicht.

UTF-8 am Besten.

ConvertEncoding stellt ja nur sicher, dass der String das Encoding hat.
Wenn der das schon vorher hatte, kommt der gleiche String zurück.

OK, so langsam komme ich dem Problem nher.
Starte ich meine Applikation und rufe die Daten vom MySQL Server ab, kann ich Sie mit DefineEncoding sauber speichern. Alle Sonderzeichen werden korrekt bernommen.

Rufe ich die gleiche Methode ein zweites Mal auf, klappt das nicht mehr. (Die MySQL DB wurde nicht verndert.)
Setze ich das Encoding beim ersten Aufruf im Debugger auf UTF8, sehen ich die Sonderzeichen wie sie sein sollen.
Beim 2. Aufruf muss ich das Encoding auf Windows-1252 setzen um die Sonderzeichen korrekt zu sehen. Dann klappt auch DefineEncoding nicht mehr.

Irgendeine Idee?