代码如下 QString filename = QFileDialog::getOpenFileName(NULL); if (filename.isEmpty()) { return; } QFile file(filename); if (file.open(QIODevice::ReadOnly)) { QByteArray encodedString = file.readAll(); QTextCodec::ConverterState state; QTextCodec *codec = QTextCodec::codecForName("UTF-8"); QString text = codec->toUnicode( encodedString.constData(), encodedString.size(), &state); if (state.invalidChars > 0) { qDebug()<<"GBK"; text = QTextCodec::codecForName( "GBK" )->toUnicode(encodedString); } else { qDebug()<<"UTF-8"; text = encodedString; } ui->textEdit->setText(text); file.close(); }
顺便记录一下,Qt在写文档时QSting是支持中文的,但是在file.write()时,需要写为 file.write(qString.toUtf8());