Seite 1 von 1

Problem mit QT / mysql und Zeichensatz

Verfasst: 4. Juli 2006 09:02
von Garfield
Hallo,
ich habe ein Programm, das eine mysql-DB an eine QDataTable anbindet.
Mysql ist konfiguriert auf latin1, die Felder enthalten Umlaute äöü, via Konsole wird alles richtig angezeigt und gespeichert (select,update).

Im QT-Widget sieht man aber die Umlaute nicht, der Text wird entweder abgeschnitten oder nach Eingabe als ??? dargestellt und landet auch nicht im Datenbankfeld (Eingabe "Glück" --> Datenbankfeld = Gl)

Es ändert auch nichts, wenn man mysql mit "utf8" in my.cnf konfiguriert oder locale auf utf8 stellt. KDE spielt auch keine Rolle, habe das Programm nur gegen QT gelinkt und unter X alleine laufen lassen.
Ich müsste jeden String mit fromutf8() umwandeln, was aber im ganzen Programm eine Riesenarbeit wäre.

Weiss jemand weiter?
(Linux 2.6.16, locale de_DE, QT 3.3.6, mysql 4.1.20)

Merci
Garfield

Verfasst: 4. Juli 2006 09:22
von Christian81
Wie kommst du auf die Idee auf einmal utf8 zu nehmen? Du sagst doch selbst dass es latin1 ist... !?
Und ja man muss es schon korrekt programmieren - Qt kann ja nicht wissen was für einen Codec die Daten haben.

Verfasst: 4. Juli 2006 12:32
von Garfield
Nun, der Witz ist, früher ging es einfach so (qt 3.3.4, mysql 4.0.irgendwas, wenn ich mich recht erinnere).
Die Benutzung von .value auf QSqlRecord oder Query lieferte den Text so wie erwartet mit Umlauten.
Jetzt geht es nicht mehr und ich frage mich, wo man dran drehen muss.

Verfasst: 4. Juli 2006 12:41
von Christian81
Ahso - das war mir nicht bekannt.
Evtl. mal deine Frage genauer stellen und auf qt-interest nachfragen wenn hier keiner eine Idee hat.

Problem mit QT / mysql und Zeichensatz (gelöst)

Verfasst: 5. Juli 2006 18:30
von Garfield
Hallo,
der Tip mit qt-interest war hilfreich.
Die Lösung ist:

1) mysql in my.cnf überall auf latin1 konfigurieren
2) normale Daten in Latin1-Codierung importieren
3) In QT-Programmen am Programmstart folgendes setzen:

QTextCodec::setCodecForCStrings(QTextCodec::codecForName("utf8"));

Ja, doch utf8! Dann klappt's mit den Umlauten in Data-Widgets! :wink:

Grüsse
Garfield

Verfasst: 2. September 2006 22:58
von pinktroll
Hallo Garfield,

was meinst du mit "normale Daten in Latin1-Codierung importieren"?

Danke!

pinktroll