Я использую QT Creator, создал консольное приложение. Все актуально. ОС Windows XP.
Я создал QString, которая содержит несколько венгерских символов. Большинство венгерских символов не требуют Unicode, но символы с двойной косой чертой для акцента требуют Unicode.
Я пытаюсь записать содержимое QString в файл, но мои символы Юникода теряют свои акценты в файле. Другими словами, информация Юникода теряется по пути.
Мой код ниже.
#include <QtCore/QCoreApplication>
#include <QString>
#include <QTextStream>
#include <QDate>
#include <QFile>
using namespace std;
int main(int argc, char *argv[])
{
QCoreApplication app(argc, argv);
QString szqLine = "NON-UnicodeIsOK: áéüúöóí NEED-Unicode: űő";
//These are Hungarian chars and require unicode. Actually, only the u & o, each having double
//slashes for eccents require unicode encoding.
//Open file for writing unicode chars to.
QFile file("out.txt");
if ( !file.open(QIODevice::WriteOnly | QIODevice::Text) ){
return 1;
}
//Stream the QString text to the file.
QTextStream out(&file);
out.setCodec("UTF-8");
out << szqLine << endl; //Use endl for flush. Does not properly write ű and ő chars.
//Accents missing in file.
file.close(); //Done with file.
return app.exec();
}