我需要在一个非常简化的系统上工作。它基于Ubuntu,但没有使用Ubuntu安装程序安装。因此只有真正必要的软件包和配置。QtCreator已安装并可用。
当我尝试创建一个带有非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
的文件。第二个代码块按预期工作。文件的内容被正确写入。
QFile f(QString::fromLatin1(fileName));
。Qt5默认假定为UTF-8
编码。 - m7913dsetlocale(LC_ALL, "")
设置正确的区域设置。 - n. m.