QString global variable and coding problem
-
I have a problem with QString which is a global variable. Coding of this variable is wrong. File is in UTF8. Here is example code:
@
#include <QtCore/QCoreApplication>
#include <QTextCodec>
#include <QDebug>QString global( "ąęśćź" );
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8")); QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8")); QString inside( "ąęśćź" ); qDebug() << "Global: " << global; // print Global: "Ä ÄÅÄź" - it's wrong qDebug() << "Inside: " << inside; // print Inside: "ąęśćź" - good return a.exec();
}
@
How to solve it? -
Your global QString is created before you set codec for c strings to UTF8 so default Latin1 is used. Hence text corruption.