qt 判断文件编码

//>>.编码转换
QString MainWindow::GetCorrectUnicode(const QByteArray &ba)
{
    QTextCodec::ConverterState state;
    QTextCodec *codec = QTextCodec::codecForName("UTF-8");
    QString text = codec->toUnicode( ba.constData(), ba.size(), &state);
    qDebug() <toUnicode(ba);
    }else if(state.invalidChars == 3){//>>.3是unicode
        text = QTextCodec::codecForName( "Unicode" )->toUnicode(ba);
    }
    else
    {
        text = ba;
    }

    return text;
}

 

 

 

打开文件调用

//打开文件
bool MainWindow::loadFile(const QString &fileName)
{

    QFile file(fileName); //新建QFile对象
    if(!file.open(QFile::ReadOnly|QFile::Text)){
        QMessageBox::warning(this,tr("多文档编辑器"),tr("无法写人文件 %1: \n %2").arg(fileName).arg(file.errorString()));
        return false ;//只读方式打开文件,出错提示,返回false
    }
    //QTextStream in(&file);//新建文本流对象
    QApplication::setOverrideCursor(Qt::WaitCursor);
    //>>.读取文件
    QByteArray  text=file.readAll();
    //>>.转换编码
    QString texts =GetCorrectUnicode(text);
     //qDebug() << texts;
    //>>.设置在文本框里面
    ui->textEdit->setText(texts);
    //设置当前文件
    curFile=QFileInfo(fileName).canonicalFilePath();
    setWindowTitle(curFile);
    //鼠标指针变回来
    QApplication::restoreOverrideCursor();
    file.close();
    return true;
}

 

你可能感兴趣的:(qt,c++,qt,c++)