总是碰到乱码,已经写了(抄了)好几篇关于中文乱码的文章,以为能解决乱码问题了,又又碰到了乱码。
是这样的:用的qt5.9.8,编译了一个小程序(mingw),是读取txt文件(utf8),ui->txtEdit->setText(str);显示出来时乱码。
后来试了一圈,用下面方法解决了乱码(如果读取超大文件,用这种方法好不好使,我没试过):
1 QString MainWindow::ReadJson(QString filePath) 2 { 3 QFile file(filePath); 4 if(!file.open(QIODevice::ReadOnly | QIODevice::Text))//只读 5 { 6 ui->lblShowStatus->setText("文件打开失败"); 7 return ""; 8 } 9 QString ret; 10 QTextStream readStream(&file); 11 12 while(!readStream.atEnd()) //没有读到文件末尾 13 { 14 //readLine 读取一行 15 ret += readStream.readLine(); 16 } 17 18 ret = QString::fromUtf8(ret.toUtf8()); 19 return ret; 20 } 21 22 void MainWindow::on_btnLoadFile_clicked() 23 { 24 QFileDialog *pDlg = new QFileDialog(this); 25 pDlg->setWindowTitle("select a file(txt)"); 26 pDlg->setNameFilter("*.txt"); 27 28 QString path; 29 if(pDlg->exec() == QDialog::Accepted){ 30 path = pDlg->selectedFiles()[0]; 31 32 } 33 ui->txtFilePath->setText(path); 34 if(!path.isEmpty()){ 35 QString str = ReadJson(path); 36 ui->txtSend->setText(str.toLocal8Bit()); 37 } 38 39 }
如果有什么好办法,请评论告诉我,谢谢。
标签:读取,utf8,ret,乱码,pDlg,qtCreator,QString,path From: https://www.cnblogs.com/warmlight/p/17592728.html