[Development] Why we *have to* remove codecFor... ?
dbzhang800 at gmail.com
Mon Apr 23 00:06:12 CEST 2012
Seems you still use two different sets of source code.
* Under MSVC 2010, source files saved as UTF8 with BOM.
* Under Linux GCC, source files saved as UTF8 without BOM.
which means your application is not corss-platform.
And of course, this is a defect of C++ instead of Qt. You should be
aware that there are two character set related to the issue.
* the set in which source ﬁles are written (the source character set),
* and the set interpreted in the execution environment (the execution
But unfortunately, even in the era of the C++11, by introducing u8" "
/ u" "/ U" " , only execution character set was solved.
However, if you still use different source codes for different
platforms, like you have done with Qt4, this is still not a problem
2012/4/22 Loaden <loaden at gmail.com>:
> Thanks for help!!
> I just test on Windows 7 (MSVC2010) and Linux (GCC 4.6.2), both (Win
> / Linux, Qt4 / Qt5) works well use below code.
>> #include <QApplication>
>> #include <QTextStream>
>> #include <QLabel>
>> int main(int argc, char *argv)
>> #ifdef Q_CC_MSVC
>> #pragma execution_character_set("UTF-8")
>> QApplication app(argc, argv);
>> QString str = QString::fromUtf8("Hello世界World!你好！");
>> QTextStream out(stdout);
>> out << str << ", strlen=" << strlen("中文") << ", sizeof=" <<
>> sizeof("中文") << endl;
>> QLabel *label = new QLabel(str + QObject::trUtf8("Hello世界World!你好！"));
>> return app.exec();
More information about the Development