Wypróbowałem wiele różnych kodowań zaczynając od UTF-8, a na Windows-1250 skończywszy.
Kod użyty w kolejnej próbie ( wynik jako ss w załączniku ):
#include <iostream>
#include <QtCore>
#include <QString>
#include <QLocale>
#include <QTextCodec>
int main(int argc, char *argv[])
{
QLocale Locale = QLocale(QLocale::Polish, QLocale::Poland);
QLocale::setDefault(Locale);
//QTextCodec *pTextCodec = QTextCodec::codecForName("Windows-1250");
QTextCodec *pTextCodec = QTextCodec::codecForName("UTF-8");
QTextCodec::setCodecForTr(pTextCodec);
QTextCodec::setCodecForCStrings(pTextCodec);
char string[64] = "char:\tzażółć gęślą jaźń";
QString QString1 = QObject::tr("tr:\tzażółć gęślą jaźń");
QString QString2 = QString("qstring:\tzażółć gęślą jaźń");
std::cout << string << std::endl \
<< QString1.toStdString() << std::endl \
<< QString2.toStdString() << std::endl;
return 0;
}
Korzystając ze standardowej biblioteki c <clocale> jestem w stanie uzyskać polskie znaki diakrytyczne.
#include <iostream>
#include <clocale>
using namespace std;
int main() {
// setlocale(LC_ALL,"C") is the default locale
cout << "- Default locale:\t" << setlocale(LC_ALL, NULL) << endl;
cout << "- Setting locale to enviroments default" << endl;
setlocale(LC_ALL, "");
cout << " - Enviroment default locale:\t" << setlocale(LC_ALL, NULL) << endl;
cout << " - zażółć gęślą jaźń" << endl;
return 0;
}
Co ja robię źle? :/
p.s.
Kodowanie w edytorze qt creator jest ustawione na UTF-8 z usuwaniem BOM
edit>
Natomiast clocale nie chce mi się uruchomić w windowsowym cmd. W oknie cygwina działa, ale przez cmd żąda biblioteki cygwin1.dll. Po ponownej kompilacji używając argumentu -mno-cygwin, program zaczął poprawnie się uruchamiać w cmd jak i cygwinie. Niestety spowodowało to utratę kodowania znaków i brak ich poprawnego wyświetlania przez cygwin'a jak i przez cmd... czarna rozpacz...