Seite 1 von 1

[gelöst] SQL Zeichencodierung

Verfasst: 23. August 2007 10:32
von dontinelli
Hallo zusammen

Nach langem Ringen habe ich es nun endlich geschafft, von Linux über den ODBC-Treiber auf eine MS SQL Datenbank zu greifen. Nun gibt es aber ein Problem bei der Anzeige: Grossbuchstaben sowie Umlaute (und ev. noch andere Zeichen) werden im TableView nicht korrekt dargestellt.
Kann ich die Zeichencodierung eines QSqlTableModel oder eines QSqlQuery global ändern oder muss ich jeden Eintrag über die Funktionen in QString ändern? Oder gibt es noch eine weitere Möglichkeit?
Die Codierung der Tabelle kann ich nicht ändern, da von anderer Seite auch darauf zugegriffen wird.

Cheers
DonTinelli

Verfasst: 23. August 2007 12:31
von upsala
Gibt es die möglichkeit die Zeichenkodierung für den Clienten beim verbinden anzugeben?

Verfasst: 23. August 2007 17:32
von dontinelli
Keine Anhnung. Wie kann man das testen?
Ich habe mir übrigens die Tabelle mal mit dem DataManager von unixODBC angeschaut. Da werden zwar die Grossen Buchstaben, nicht aber die Umlaute richtig dargestellt.

Verfasst: 23. August 2007 18:33
von upsala
Leute, wenn ihr mit Datenbanken arbeiten wollt, solltet ihr euch damit auch auskennen...

Verfasst: 25. August 2007 17:34
von dontinelli
Danke, das hat mir weitergeholfen...

Mitlerweile habe ich herausgefunden, dass es daran liegt, dass in der Datenbank nvarchar als Dateityp angegeben ist, die varchar werde richtig übernommen. Ist jemandem das Problem bekannt, weshalb bei der Umwandlung von nvarchar in QString (über einen QVariant im QSqlQuery) solche "Fehler" entstehen? nvarchar sollte doch auch Unicode sein, oder?

Cheers
DonTinelli

Verfasst: 30. August 2007 00:02
von dontinelli
Eine Qt-Lösung scheint es wohl nicht zu geben.
Ich habe das Problem jetzt so umgangen, dass ich in der SELECT-Anfrage den Dateityp in varchar konvertiere:

Code: Alles auswählen

CAST(p.Adresse as varchar)