Kyrillisch in Datenbank speichern

Alles rund um die Programmierung mit Qt
Antworten
Treo83
Beiträge: 3
Registriert: 18. Mai 2008 00:55

Kyrillisch in Datenbank speichern

Beitrag von Treo83 »

Hallo Leute.

Seid einiger zeit beschäftige ich mich mit QT ( Speziel QSql und co ).

Ich möchte ganz einfach einen kyrillischen text, den ich in ein Edit Control (MFC) kopiert habe in eine Oracle ( XE ) Datenbank speichern. Die Variable für das Edit Control ist ein CString und diese wird korrekt angezeigt. Nun ja einen CString kann man ja nicht einfach so in eine Tabelle inserten. Wenn ich diesen CString nun in einen QString umwandle kommt nur Müll bei raus.

Ich füge Daten mit dem Qquery ein.

Ich stehe da im Moment auf dem Schlauch und hoffe mir kann jemand behilflich sein.

MFG Simon
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Schau Dir mal QTextCodec an und beschäftige dich asllg. mit Codecs bzw. Unicode.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Treo83
Beiträge: 3
Registriert: 18. Mai 2008 00:55

Beitrag von Treo83 »

Hallo Christian81,

danke für deine Antwort. Ich habe mich mal damit befasst. Damit habe ich dann folgendes gebaut:

Code: Alles auswählen

QString valL = queryL.value(0).toString();
QTextCodec *codec = QTextCodec::codecForName("KOI8-R");
QByteArray encodedString = codec->fromUnicode(valL);
QMessageBox::information(0,"Anzeige",encodedString);
So beschreibt es ja auch die Doku. Jedoch kommt trotzdem nur Müll bei raus.

Ich sitze schon seid Tagen an diesem Problem und find keine Lösung. Hast du noch nen Tip für mich.

Danke
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Die Doku beschreibt es so auf keinen Fall!

Code: Alles auswählen

QMessageBox::information(0,"Anzeige",encodedString); 
Was soll das denn? QMessageBox möchte einen QString, kein QByteArray mit Daten in irgend einer Kodierung.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Treo83
Beiträge: 3
Registriert: 18. Mai 2008 00:55

Beitrag von Treo83 »

selbst wenn ich das QByteArray in einen QString packe kommt genau das gleiche raus.

Was mache ich falsch?
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Treo83 hat geschrieben: Was mache ich falsch?
Du hast Dich nicht korrekt informiert.

Ein QString ist Unicode, ein QByteArray ein (mehr oder weniger) char* mit Text der in irgend einer Kodierung kodiert ist.
Von queryL.value(0).toString() bekommst Du einen QString - er ist also schon in Unicode. Falls da nur Müll drin steht ist entweder in der DB Müll oder die Kodierung der DB passt nicht (was ich nicht glaube da, soweit ich den Code vom oracle-sqlplugin lesen kann, die oracle-db - Funktionen Unicode reden).
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Antworten