我必須在非常簡化的系統上工作。它基於Ubuntu,但未安裝Ubuntu安裝程序。所以他們只是真正需要的軟件包和配置。 QtCreator已安裝並正常工作。Qt:文件名中的非ASCII字符被替換爲'?'
當我嘗試創建一個非ASCII字符的文件時,該字符被替換爲?
。例如:TestÄ.txt
將被命名爲Test?.txt
。但是這隻發生在我使用Qt函數的時候。 C++標準庫的作品。
實施例:
#include <QDebug>
#include <QFile>
#include <fstream>
int main(int, char *[])
{
const char* fileName = "TestÄ.txt";
qDebug() << fileName;
{
QFile f(fileName);
f.open(QIODevice::WriteOnly);
f.write("QFile Äößń\n");
}
{
std::ofstream f;
f.open(fileName, std::fstream::app);
f << "std::ofstream Äößń\n";
}
return 0;
}
應該有一個文件TestÄ.txt
與兩行。但第一個塊創建文件Test?.txt
。第二塊按預期工作。文件的內容寫入正確。
如果源文件編碼Latin1的,你可以試試'一個QFile F(QString的:: fromLatin1(文件名));'QT5假設' UTF-8「。 – m7913d
嘗試使用'setlocale(LC_ALL,「」)'設置正確的語言環境。 –
如果問題不是代碼,它可能是您用於[文件系統中的名稱](https://serverfault.com/a/87087)的字符編碼。 –