Qt 在跨平台环境中,是否有必要的安全方式将数据存储在QSettings中?

Qt 在跨平台环境中,是否有必要的安全方式将数据存储在QSettings中?,qt,macos,registry,plist,qsettings,Qt,Macos,Registry,Plist,Qsettings,我的应用程序的mac版本刚刚开始破坏我使用QSettings保存和恢复的全屏和正常布局。甚至我的应用程序的旧版本现在也在为我的客户服务 当我在谷歌上搜索类似的东西时,我发现了一个bug报告,其中包含一行有趣的内容: QSettings s; restoreState(s.value(QString::fromLocal8Bit("state")).toByteArray()); 保存到计算机plist或windows注册表时,是否必须格式化此fromLocal8bit()中的数据 编码的是数

我的应用程序的mac版本刚刚开始破坏我使用QSettings保存和恢复的全屏和正常布局。甚至我的应用程序的旧版本现在也在为我的客户服务

当我在谷歌上搜索类似的东西时,我发现了一个bug报告,其中包含一行有趣的内容:

QSettings s;
restoreState(s.value(QString::fromLocal8Bit("state")).toByteArray());
保存到计算机plist或windows注册表时,是否必须格式化此fromLocal8bit()中的数据



编码的是数据,只是字面上的“状态”。如果使用QByteArray或QString,则会正确编码和解码这些值 . QString::fromLocal8Bit()部分用于将源文件中的字符串文字转换为unicode字符串。在源文件中坚持使用ASCII是一种很好的做法,因为UTF-8等其他编码通常不适用于所有编译器,尤其是MSVC

要将文本转换为QString,我建议使用QLatin1String:

QLatin1String("state")
严格来说,fromLocal8Bit()是false,因为本地8bit编码与源文件编码无关,而源文件编码是文本的来源。 但是,由于“state”不包含任何非ascii字符,所以它无论如何都不重要