IMO, codecForXXX() is really a good news for China users. In the past three years, I noticed that too many newcomers using these functions in a wrong way.
such as {{{ QTextCodec *codec = QTextCodec::codecForName("System"); QTextCodec::setCodecForLocale(codec); QTextCodec::setCodecForCStrings(codec); QTextCodec::setCodecForTr(codec); }}} or {{{ QTextCodec::setCodecForCStrings(QTextCodec::codecForLocale()); QTextCodec::setCodecForTr(QTextCodec::codecForLocale()); }}} or {{{ QTextCodec::setCodecForLocale(QTextCodec::codecForName("GBK")); }}} or ... The reason why they use this is quite simply: as they want to put Chinese characters in to narrow string " const char* " , but not familiar with * the set in which source files are written (the source character set), * and the set interpreted in the execution environment (the execution character set). So they google/google/google, ask on local Qt forums, talk with other newcomer, then they satisfied with such a "workable" solution. Most of them even don't know their source code can only be compiled by MSVC under Simplified-Chinese-Windows In addition, at present, the fact is, once Chinese characters are directly used in C++ application, your source code will refuse to work in a cross-platform way, and codecForXXX() can not give any help for this. Debao 2012/4/22 Loaden <loa...@gmail.com>: > Hi, All! I am only a physics teacher from China. It makes me confused that > I just noticed the codecFor... function is removed for now. > See: > https://codereview.qt-project.org/#change,14626 > https://codereview.qt-project.org/#change,14999 > > But please let's me know how to make this work with *MSVC2010*? > >> #include <QApplication> >> #include <QLabel> >> #include <QTextCodec> >> #include <QTextStream> >> #include <QDebug> >> int main(int argc, char *argv[]) >> { >> #ifdef Q_OS_WIN >> QTextCodec *codec = QTextCodec::codecForName("GBK"); >> QTextCodec::setCodecForLocale(codec); >> #if QT_VERSION < 0x050000 >> QTextCodec::setCodecForCStrings(codec); >> QTextCodec::setCodecForTr(codec); >> #endif >> #endif >> QApplication app(argc, argv); >> QString str = QString::fromAscii("Hello世界World!你好!"); >> QTextStream out(stdout); >> qDebug() << "Hello世界World!你好!"; >> out << str << endl; >> QLabel *label = new QLabel(str + QObject::tr("Hello世界World!你好!")); >> label->show(); >> return app.exec(); >> } > > In Qt4, It's works fine!! > That so sad, It's not work in Qt5! > > In currently, I does't test it on Linus yet, But It's should works well > whether use Qt4 or Qt5. > But don't abandoned Windows, and *MSVC* compiler. > > -- > Best Regards > Loaden > > > _______________________________________________ > Development mailing list > Development@qt-project.org > http://lists.qt-project.org/mailman/listinfo/development > _______________________________________________ Development mailing list Development@qt-project.org http://lists.qt-project.org/mailman/listinfo/development