Problem mit QT / mysql und Zeichensatz

Alles rund um die Programmierung mit Qt
Antworten
Garfield
Beiträge: 5
Registriert: 4. Juli 2006 08:52
Wohnort: Wallis

Problem mit QT / mysql und Zeichensatz

Beitrag 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
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag 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.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Garfield
Beiträge: 5
Registriert: 4. Juli 2006 08:52
Wohnort: Wallis

Beitrag 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.
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag 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.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Garfield
Beiträge: 5
Registriert: 4. Juli 2006 08:52
Wohnort: Wallis

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

Beitrag 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
pinktroll
Beiträge: 10
Registriert: 23. Oktober 2004 19:52
Wohnort: bei München
Kontaktdaten:

Beitrag von pinktroll »

Hallo Garfield,

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

Danke!

pinktroll
-----------------------------------------------------------------------------------
Beati pauperes spiritu
-----------------------------------------------------------------------------------
Antworten