一位芬兰客户告诉我,芬兰语的正确排序是:A-z,·。
但是在WindowsVista上的Qt4.4.2中,QString::localeAwareCompare()将其返回为:a、?b-o、p-z。
#include <qapplication.h>
#include <qlocale.h>
#include <iostream>
#include <tchar.h>
int
main( int argc, char* argv[] )
{
QLocale::setDefault ( QLocale( QLocale::Finnish ) );
QApplication app( argc, argv );
QString s1 = "a";
QString s2 = "ä";
QString s3 = "Ã¥";
QString s4 = "b";
QString s5 = "o";
QString s6 = "ö";
QString s7 = "z";
std::cout << "QString::localeAwareCompare( s1, s2 )=" << QString::localeAwareCompare( s1, s2 ) << "\n";
std::cout << "QString::localeAwareCompare( s2, s3 )=" << QString::localeAwareCompare( s2, s3 ) << "\n";
std::cout << "QString::localeAwareCompare( s3, s4 )=" << QString::localeAwareCompare( s3, s4 ) << "\n";
std::cout << "QString::localeAwareCompare( s4, s5 )=" << QString::localeAwareCompare( s4, s5 ) << "\n";
std::cout << "QString::localeAwareCompare( s5, s6 )=" << QString::localeAwareCompare( s5, s6 ) << "\n";
std::cout << "QString::localeAwareCompare( s5, s6 )=" << QString::localeAwareCompare( s6, s7 ) << "\n";
return app.exec();
}
输出:
QString::localeAwareCompare( s1, s2 )=-1
QString::localeAwareCompare( s2, s3 )=-1
QString::localeAwareCompare( s3, s4 )=-1
QString::localeAwareCompare( s4, s5 )=-1
QString::localeAwareCompare( s5, s6 )=-1
QString::localeAwareCompare( s5, s6 )=-1