qtCreator 读取utf8文本中文乱码

发布时间 2023-07-31 10:18:08作者: 阳光下的小土豆

总是碰到乱码,已经写了(抄了)好几篇关于中文乱码的文章,以为能解决乱码问题了,又又碰到了乱码。

是这样的:用的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 }

如果有什么好办法,请评论告诉我,谢谢。