Qt6 中的重音和特殊字符是否被破坏?

Are accents and special characters broken in Qt6?

我有一个从 csv 文件读取信息并将信息保存到数据库中的 Qt 程序。 在我尝试从 Qt 5.15.2 更新到 Qt 6.3 之前没有问题。现在,当我从文件中读取时,所有重音都转换为问号。

我已经尝试过使用几乎所有方法来显式解释 QTextStream 或将 QString 文本转换为 Utf-8 或一般的 Unicode,但它们都无法正常工作。这是 Qt 6 中的已知问题吗(因为重音符号在 Qt 5.15.2 中工作得很好)?

提前致谢。

这里是读取 csv 文件的片段:

QFile file(path);
file.open(QIODevice::ReadOnly | QIODevice::Text);

QTextStream in(&file);
while (in.readLineInto(&line)){
   QStringList separatedLine = line.split("\t");
   qDebug() << separatedLine;
   //do things and save data in database
}

我遇到的问题是,如果我用 Qt5.15.2 编译它,但在 Qt6.3.0 中编译它,它就可以完美运行。读取完全相同的 .csv 文件,调试以下内容:

//原行
34111514 TARJETA COMUNICACIÓN TMB-251 TMB251

//Qt 5.15.2 qDebug 输出
QList("34111514", "TARJETA COMUNICACIÓN TMB-251", "TMB251")

//Qt 6.3 qDebug 输出
QList("34111514", "TARJETA COMUNICACI?N TMB-251", "TMB251")

我非常怀疑这是 csv 文件格式的问题,因为它在旧版 Qt 中工作正常。

好的,经过几天的研究和尝试,它现在可以工作了。我无法重现该问题,但当我使用 LibreOffice Calc 保存编码为 UTF-8 的 csv 或当我通过电子邮件发送该文件时,一定发生了某些事情。 我想编码可能已经以某种方式改变或损坏成某种东西,出于某种原因,Qt5.15.2 可以解释但 Qt6.3 不能。 我通过使用 Notepad++ 再次将文件编码为 UTF-8 解决了这个问题。