Qt5 ile birlikte artık tüm kaynak dosyalar UTF-8 formatınd unicode olarak çalışılmaya geçmiştir. Daha önceden ise programlamacılar istedikleri formatda (ISO-8859-9 türkçe ) kaynak dosyalarını ayarlayabiliyorlardı. Yazılan karakterlerin QString tarafından unicode çevrileceği zaman hangi karakter kodlamasının kaynak dosyada kullanıldığının bilinmesi gerekiyordu. QTextCodec::setCodecForCStrings(codec) kodu ile bunu sağlıyorduk. Dolayısıyla Qt5 de bu fonksiyon kalktı. Aşağıdaki kod Qt4 için geçerli ve kaynak dosyalar Türkçe Karakter Fonut ISO-8859-9 formatı kullanılarak kodlanmıştır.
/* Burada QTextCodec, QTextStream kullanıldı. Konsolun "utf-8" kodlu olması durumunda aşağıdaki türkçe karakter çıktıları doğru olur. Bu dosya latin-5(8859-9) ile kodlanmıştır. Dolayısıyla burada yazılan türkçe karakterlerin doğru şekilde QString ile evrensel koda (Unicode) çevrilmesi için QTextCodec::setCodecForCStrings fonksiyonu kullanıldı. */ #include <QtCore/QCoreApplication> #include <QTextStream> #include <QTextCodec> QTextStream cin(stdin); QTextStream cout(stdout); int main(int argc,char * argv[]) { QTextCodec::setCodecForCStrings(QTextCodec::codecForName("ISO-8859-9")); QCoreApplication app(argc, argv); cout<<QString("Testing")<<endl; cout<<QString("Türkçe karakter testi : çÇiİşŞüÜğĞöÖ")<<endl; cout<<"Codec Name for output to Console :"<<cout.codec()->name()<<endl; cout.setCodec("UTF-8"); //Eğer konsol utf-8 bazlı ise türkçe karakterler latin-5 den rahatlıkla dönüşür. cout<<QString("Testing")<<endl; cout<<QString("Türkçe karakter testi : çÇiİşŞüÜğĞöÖ")<<endl; cout<<"Codec Name for output to Console :"<<cout.codec()->name()<<endl; //Burada QTextCodec ile çevrim yapılmaya çalışılıyor. QTextCodec::ConverterState * cstate = new QTextCodec::ConverterState(QTextCodec::IgnoreHeader|QTextCodec::ConvertInvalidToNull); cout<<cout.codec()->toUnicode("Türkçe karakter testi : çÇiİşŞüÜğĞöÖ",36,cstate)<<endl; cout<<"Codec Name for output to Console :"<<cout.codec()->name()<<endl; //Burada Latin-5 (8859-9) dan unicode doğru çevrim yapması için doğru QTextCodec kullanımı sağlanıyor. QTextCodec * trKodek=QTextCodec::codecForName("ISO-8859-9"); cout<toUnicode("Türkçe karakter testi : çÇiİşŞüÜğĞöÖ",36,cstate)<<endl; cout<<"Codec Name for output to Console :"<<cout.codec()->name()<<endl; QList codecList = QTextCodec::availableCodecs(); cout <<"Supported Codecs"<<endl; for(int i=0;i<codecList.length();i++) { cout << "Codec Name : " << codecList.at(i)<<endl; } /* Unicode karakter seti evrensel olduğu için tüm karakterler için karşılaştırma, büyültme ve küçültme fonksiyonları umulduğu gibi çalışmaya bilir. Aşağıda Türkçe karakterler büyültülüyor ve QLocale test ediliyor. */ QString turkce_karakterler="ıüğşçö"; cout << "Country :"<<QLocale::countryToString(cout.locale().country())<<endl; cout << "Language :"<<QLocale::languageToString(cout.locale().language())<<endl; QLocale turkish(QLocale::Turkish, QLocale::Turkey); cout << "Months"<<endl; for (int i=1; i<=12; i++) cout<<turkish.monthName(i)<<"\n"; cout << "Türkçe karakter büyültme : " << turkce_karakterler<<turkce_karakterler.toUpper() << endl; return app.exec(); }