QLockFile tryLock无法使用非英语路径

问题描述

我正在用linedit编写应用程序,用户可以在其中粘贴(或通过浏览器对话框选择)其文件的位置,以供进一步使用。 因此,我有一个路径的QString和一堆检查(并且所有检查都成功通过,并且在粘贴时肯定是可读取的,可写的并且存在)。我还需要用锁来保护这些用户文件,因为可能受几个应用程序影响(在此问题中这些应用程序肯定无法运行)。

一切顺利,直到我尝试使用以非英语(non utf8?)符号命名的本地网络上的文件夹为止。这是一个很大的问题,因为我的应用程序支持多种语言,包括中文,法语,俄语等。也可以有混合语言文件夹。问题文件夹看起来像这样(并且已成功传递到QString filepath变量,我的意思是,它看起来可读,没有unicode问题):

\ localhost \ myfiles \ Test \Русскоё俄语名称

失败的代码是:

auto lockFile = std::make_unique<QLockFile>( filepath + ".lock" );
std::shared_mutex mutex;
std::unique_lock<std::shared_mutex> lock(mutex );

if ( lockFile )
    return lockFile ->tryLock( ); // -- here come the unexpected failures with all the codes of QLockfile failures
else
    return false;

我尝试使用QTextCodec更改语言环境,但是没有用。我还认为它可以通过某种方式与网络连接,因为在我的本地磁盘上不会发生此问题,但是我不知道到底是什么问题。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...