Ausgabe Russischer Text mit drawText(...) o. QMessagebox()

Alles rund um die Programmierung mit Qt
Antworten
Komegianer
Beiträge: 2
Registriert: 12. Januar 2009 16:31

Ausgabe Russischer Text mit drawText(...) o. QMessagebox()

Beitrag von Komegianer »

Hallo zusammen,

ich möchte einen simplen Russischen Text in meiner Anwendung ausgeben.
QSrting teststring ="привет мир";
painterStpg->drawText( 5, 45,teststring );

oder
QMessageBox::information( 0, tr("Test"), teststring , tr("Schließen"), 0);

leider kann ich den String nicht mit tr(..) übersetzen lassen weil er zur Laufzeit ein-/ausgegeben werden soll.

Auch mit dem QT Beispiel komme ich nicht weiter.
QCString locallyEncoded = "привет мир"; // text to convert
QTextCodec *codec = QTextCodec::codecForName("KOI8-R"); // get the codec for KOI8-R
QString unicodeString = codec->toUnicode( locallyEncoded );

Hier bringt der Debugger für unicodeString {"?????? ???몭몭몭ꮫꮫꮫꮫ" len=10} zurück.

Das muss doch gehen!

Benutze MS Visual.Net 2003 und QT 3.3.6
kitov
Beiträge: 36
Registriert: 29. November 2006 12:24

Re: Ausgabe Russischer Text mit drawText(...) o. QMessagebox

Beitrag von kitov »

versuch mit UTF-8 oder cp1251
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Das liegt wohl an deinem Compiler. Wie speicherst Du die Datei ab? Als utf-8? Wie interpretiert der Compiler diese Datei - d.h. wie ist deine LANG Umgebungsvariable eingestellt? Und drittens - laut Doku interpretiert QString::operator= ( const char * str ) den String als ASCII-String. Das ist sicher nicht was Du willst.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Komegianer
Beiträge: 2
Registriert: 12. Januar 2009 16:31

Beitrag von Komegianer »

Hallo kitov und Christian81,

danke für die superschnelle Antwort.
Ich habe anstelle KOI8-R jetzt cp1251 eingesetzt.

QCString locallyEncoded = "привет мир"; // text to convert
QTextCodec *codec = QTextCodec::codecForName("cp1251"); // get the codec for cp1251
QString unicodeString = codec->toUnicode( locallyEncoded );

Dann meine Cpp Datei im Unicodeformat abgespeichert.
Unter erweiterte Speichereinstellungen habe ich
Kyrillisch (Windows) - Cpdepage 1252
ausgewählt.

Jetzt gehts, super!
Antworten