QString global variable and coding problem
-
wrote on 20 Jul 2012, 01:17 last edited by
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? -
wrote on 20 Jul 2012, 06:30 last edited by
Hello,
How about utf-8 BOM.
if you select "add if encoding is UTF-8" (on windows), it may work correctly. -
wrote on 20 Jul 2012, 10:01 last edited by
Your global QString is created before you set codec for c strings to UTF8 so default Latin1 is used. Hence text corruption.
-
wrote on 20 Jul 2012, 15:22 last edited by
sidewinder your are right. To print correct global string this is required:
@
global.toLatin1()
@
1/4