qt 判断文件编码

0 篇文章 0 订阅
//>>.编码转换
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;
}

 

  • 3
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值