我有一個 Qt 程式,它從 csv 檔案中讀取并將資訊保存到資料庫中。在我嘗試從 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 中運行良好。
uj5u.com熱心網友回復:
好的,經過幾天的研究和嘗試,它現在可以作業了。我無法重現該問題,但當我使用 LibreOffice Calc 保存編碼為 UTF-8 的 csv 或通過電子郵件發送該檔案時,一定發生了一些事情。我想編碼可能已經以某種方式改變或損壞,由于某種原因,Qt5.15.2 可以解釋但 Qt6.3 不能。我通過使用 Notepad 再次將檔案編碼為 UTF-8 解決了這個問題。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/476825.html
上一篇:QTQML C MVVM
