欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

qt 判断文件编码

程序员文章站 2024-02-19 12:31:58
...
//>>.编码转换
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() <<state.invalidChars;
    //等于是是GBK
    if (state.invalidChars == 4)
    {
        text = QTextCodec::codecForName( "GBK" )->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++