Hallo,
ich habe das kleine Problemchen das meine Umlaute nicht korrekt in die Datenbank geschrieben werden. Die Quelltexte sind in UTF-8 kodiert, in der Datenbank kommt aber nur Schrott an.
Ich denke, das ich irgendwo angeben muss welche Kodierung ich verwende, aber ich habe bis jetzt nicht raus gefunden an welcher Stelle.
Und eine Antwort auf diese Frage konnte ich hier im Forum leider auch noch nicht finden.
Gruß
Torsten
sql und utf-8
Bei MySQL muß ein als allererstes abgesetztes Statement "SET names='utf8'" doch reichen. Das gilt solange die Verbindung steht.
Und davor und danach ein "SHOW VARIABLES", damit du siehst, ob das eine Auswirkung hat.
Wenn die Variable richtig gesetzt ist und es nicht geht, würde ich sagen, daß der Unicode-String mit dem Kommando mit den Unicodezeichen drin irgendwo intern von wchar* auf char* umgewandet wird und dann hast du keine Chance. Das Problem hatte ich mit einem PHP/MSSQL-Treiber auch mal. Da bleibt dir nur der Umweg mit dem von mir beschriebenen Hack mit den Hexwerten.
G.
Und davor und danach ein "SHOW VARIABLES", damit du siehst, ob das eine Auswirkung hat.
Wenn die Variable richtig gesetzt ist und es nicht geht, würde ich sagen, daß der Unicode-String mit dem Kommando mit den Unicodezeichen drin irgendwo intern von wchar* auf char* umgewandet wird und dann hast du keine Chance. Das Problem hatte ich mit einem PHP/MSSQL-Treiber auch mal. Da bleibt dir nur der Umweg mit dem von mir beschriebenen Hack mit den Hexwerten.
G.
So, ich hab das jetzt mal auf verschiedene Arten probiert.
Aber egal ob ich das direkt nach dem connect sende oder direkt vor dem query - die zeichen werden nicht utf-kodiert in der datenbank abgelegt.
Was ich zuletzt probiert habe ist folgender Code (nach MySQL-Handbuch der korrekte Query):
Aber egal ob ich das direkt nach dem connect sende oder direkt vor dem query - die zeichen werden nicht utf-kodiert in der datenbank abgelegt.
Was ich zuletzt probiert habe ist folgender Code (nach MySQL-Handbuch der korrekte Query):
Code: Alles auswählen
opened = db.open();
QSqlQuery query("SET NAMES 'utf8'");
query.exec();
Mach mal
Eventuell musst dus auch im Server anpassen, bzw. in den Tabellen/Spalten.
Code: Alles auswählen
show variables like 'char%'