Hi Loaden, 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 files are written (the source character set), * and the set interpreted in the execution environment (the execution character set). 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 for you. Debao 2012/4/22 Loaden <[email protected]>: > 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") >> #endif >> 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!你好!")); >> label->show(); >> return app.exec(); >> } > _______________________________________________ Development mailing list [email protected] http://lists.qt-project.org/mailman/listinfo/development
