[gelöst] [Qt4] Datenbank Select aber Problem mit Umlauten

Alles rund um die Programmierung mit Qt
Antworten
FlorianBecker
Beiträge: 1213
Registriert: 2. Dezember 2004 10:54
Kontaktdaten:

[gelöst] [Qt4] Datenbank Select aber Problem mit Umlauten

Beitrag von FlorianBecker »

Hallo,

ich frage einige Dinge von einer SQLite3 Datenbank ab, ich bekomme bei dem Query selbst alle möglichen Abfragen mit und ohne Umlaute hin, durch toLocal8Bit(). Das funktioniert immer und bringt immer das gewünschte Ergebnis.

Jetzt das Problem, wenn ich nun diesen Query habe und von einem SELECT die Daten darstellen möchte, bekomme ich es absolut nicht hin, die Umlaute darzustellen.

Code: Alles auswählen

/* Die Abfrage */
    QSqlQuery query;
    query.prepare( "SELECT id, blz, bezeichnung, ort FROM plaa_blz WHERE 1 AND blz LIKE ? AND bezeichnung LIKE ? AND ort LIKE ?" );
    query.bindValue( 0, "%" + blz + "%" );
    query.bindValue( 1, QString( "%" + name + "%" ).toLocal8Bit() );
    query.bindValue( 2, QString( "%" + ort + "%" ).toLocal8Bit() );
    query.exec();
    while ( query.next() ) {

      pResult += query.value( 1 ).toString();
      pResult += query.value( 2 ).toString(); // **Problem 1**
      pResult += query.value( 3 ).toString(); // **Problem 2**
      pResult += query.value( 0 ).toString();
    }
Dort, wo Problem 1 und Problem 2 steht kommen die Umlaute immer als Salat heraus. Ich habe mich ein wenig in den Treiber Sourcen umgesehen, es sieht so aus, als ob hier utf16 verwendet wird. Also ich habe alle Möglichkeiten, fromLocale8Bit zu fromUtf16 ausprobiert, aber es geht überhaupt nix. Weiß jmd. vielleicht wie es geht, oder hat das gleiche Problem und trotzdem eine Lösung dafür bereits gefunden? Das dort nun toQString steht ist egal, da ich ja noch keine alternative wirkliche Lösung gefunden habe.
Zuletzt geändert von FlorianBecker am 24. Oktober 2005 13:49, insgesamt 1-mal geändert.
BartSimpson
Beiträge: 1379
Registriert: 6. November 2004 12:03
Kontaktdaten:

Beitrag von BartSimpson »

Laut SQLite Doku ist das aber alles gar nicht nöitg.
TEXT. The value is a text string, stored using the database encoding (UTF-8, UTF-16BE or UTF-16-LE).
also eh entwerder UTF8 oder UTF16
FlorianBecker
Beiträge: 1213
Registriert: 2. Dezember 2004 10:54
Kontaktdaten:

Beitrag von FlorianBecker »

Also mit externen Viewer werden die Umlaute auch korrekt dargestellt.

Aber alles andere funktioniert einfach nicht.

Bedeutet das, dass es gehen würde, wenn die contents UTF8 sind? Ich glaube weil ich schon soviel probiert habe, bin ich hier ein wenig verwirrt langsam.
BartSimpson
Beiträge: 1379
Registriert: 6. November 2004 12:03
Kontaktdaten:

Beitrag von BartSimpson »

eventuell must du der datenbank noch sagen wie sie die Daten liefern soll.
Denn mit bei dem sqlite3 tool kann man ja auch die kodierung festlegen.
FlorianBecker
Beiträge: 1213
Registriert: 2. Dezember 2004 10:54
Kontaktdaten:

Beitrag von FlorianBecker »

Ok, also ich habe das Problem gelöst. Du hast Recht, das geht wirklich so wie in der Dokumentation beschrieben. Das bedeutet aber, dass man überall UTF8 benutzt. Also UTF8 Content in der Datenbank und dann kann man jegliche Konvertierung außer acht lassen. Dank dir, den Hinweis habe ich wirklich übersehen.
Antworten