QSettings不善于处理Unicode

7

我正在使用QSettings将一些设置存储在INI文件中。然而,我的程序不是用英语编写的,因此有些设置包含Unicode字符串。看起来Qt写入INI文件时不是以utf8或utf16编码,而是其他编码方式。例如,字符串“Привет мир!”(俄文“Hello world!”)看起来像这样:

WindowTitle=\x41f\x440\x438\x432\x435\x442 \x43c\x438\x440!

我想手动编辑设置文件,但是我无法像这样使用它。是否有一种方法可以强制Qt以Unicode格式保存?

1个回答

18

请查看QSettingssetIniCodec函数。

将用于访问INI文件(包括Unix上的.conf文件)的编解码器设置为codec。编解码器用于解码从INI文件读取的任何数据,并对写入文件的任何数据进行编码。默认情况下,不使用编解码器,并且使用标准INI转义序列来编码非ASCII字符。

因此,您应该使用您想要的编解码器来调用它,例如:

QSettings settings;
settings.setIniCodec("UTF-8");

请注意,在访问任何数据之前,必须立即调用它,在创建QSettings对象后。


完美运行,我移除了QJson,因此少了一个依赖)) - Septagram

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接