Seite 1 von 1

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

Verfasst: 18. März 2009 10:13
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

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

Verfasst: 18. März 2009 11:05
von kitov
versuch mit UTF-8 oder cp1251

Verfasst: 18. März 2009 11:07
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.

Verfasst: 18. März 2009 11:56
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!