gpt4 book ai didi

c++ - 使用非 unicode 名称创建 QFile

转载 作者:行者123 更新时间:2023-11-30 04:28:56 26 4
gpt4 key购买 nike

我有一个 KOI8-R 编码的字符串,它作为 argv 传递,所以最初它是一个 char* 对象。不幸的是,此时使用这种已弃用的编码无济于事。系统locale是KOI8-R,源码也是这个编码。

该字符串是文件的路径,其中一些目录在 KOI8-R 中具有名称。我需要使用 QFile 打开要写入的文件。但是,无论我尝试什么,open() 总是返回 false。

我需要将路径转换为 ​​QString 以将其传递给 QFile 的构造函数,但是,直接转换 QString::fromLocal8Bit() 和 QFile::decodeName() 似乎没有帮助。

char* filename; // This is a KOI8-R string
QFile f(QString::fromLocal8Bit(filename));
// QFile f(QFile::decodeName(filename)) doesn't work too
f.open(QIODevice::WriteOnly | QIODevice::Text); // returns false

我让它工作的唯一方法是在 STL 的 ofstream 对象的帮助下,将 char* 传递给 ofstream 构造函数工作正常,但是,使用 QFile 更可取,因为应用程序是在 QT 中。

最佳答案

解决方案是在对字符串进行任何操作之前添加 QApplication initialization (QApplication a(argc, argv);)。显然,语言环境初始化在 QApplication 构造函数的深处。

关于c++ - 使用非 unicode 名称创建 QFile,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9741771/

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