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;
}
上一篇: 【正则】判断上传文件的文件类型
下一篇: 常用的 MIME type