gpt4 book ai didi

c++ - Qt:文件名中的非 ASCII 字符被替换为 '?'

转载 作者:太空狗 更新时间:2023-10-29 21:34:54 25 4
gpt4 key购买 nike

我必须在一个非常精简的系统上工作。它基于 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。但第一个 block 创建文件 Test?.txt。第二个 block 按预期工作。文件内容写入正确。

最佳答案

未设置系统区域设置。我没有意识到,因为有人在 .bashrc 中添加了配置,因此在终端中设置了语言环境。

为了修复它,我创建了文件/etc/default/locale,内容为:

LC_ALL="en_US.UTF-8"
LANG="en_US.UTF-8"

关于c++ - Qt:文件名中的非 ASCII 字符被替换为 '?',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44783373/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com