Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум на CrossPlatform.RU _ Qt Ввод/Вывод, Сеть. Межпроцессное взаимодействие _ Изменить кодировку файла

Автор: Rosster 9.2.2010, 13:33

Есть код:
QFile file("1.txt");
file.open(QIODevice::WriteOnly);
По умолчанию создается с кодировкой ANSI, а как программно с помощью QT поменять кодировку файла?
Спасибо

Автор: Litkevich Yuriy 9.2.2010, 13:59

Пример программы перекодировщика текстовых файлов:

Раскрывающийся текст
#include <QtCore>
#include <QtDebug>


int main(int argc, char* argv[])
{
    QCoreApplication a(argc, argv);
    
    QString sourceFile, targetFile;
    QStringList list = a.arguments();
    
    if (list.size() < 2)
        return 1;
    
    sourceFile = list.at(1);
    QFile source(sourceFile);
    QFileInfo fi(source);
    
    targetFile = fi.baseName() + "_trget" + "." + fi.completeSuffix();
    QFile target(targetFile);
    

    if (!source.open(QIODevice::ReadOnly | QIODevice::Text))
        return 1;

    if (!target.open(QIODevice::WriteOnly | QIODevice::Text | QIODevice::Truncate))
        return 1;

    QTextStream in(&source);
    QTextCodec *inCodec = QTextCodec::codecForName("IBM866");
    in.setCodec(inCodec);
    
    QTextStream out(&target);
    QTextCodec *outCodec = QTextCodec::codecForName("UTF-8");
    out.setCodec(outCodec);    
        
    
    while (!in.atEnd()) {
        QString line = in.readLine();
        out << line << endl;
    }

    return 0;
}

Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)