如何使用 QSettings 将 UTF-8 字符正确写入 *.ini 文件的 [section] 和 [name] 中?

How can I use QSettings to write UTF-8 characters into [section] and [name] of *.ini file properly?

我的代码片段在这里:

QSettings setting("xxx.ini", QSettings::Format::IniFormat);
setting.setIniCodec(QTextCodec::codecForName("UTF-8"));
setting.beginGroup(u8"运动控制器");
setting.setValue(u8"运动控制器", u8"运动控制器");
setting.endGroup();

但是写的是这样的:

[%U8FD0%U52A8%U63A7%U5236%U5668]
%U8FD0%U52A8%U63A7%U5236%U5668=运动控制器

看来我确实(部分)正确设置了编码,但是我应该如何将部分和名称从某些百分号代码更改为文本?

环境是 Qt 5.12.11 和 Visual Studio 2019

不幸的是,这是 QSettings 中的硬编码行为,您根本无法更改。

在节和键名中,Unicode 字符 <= U+00FF(a..zA..Z0..9_- 除外, 或 .) 以 %XX 十六进制格式编码,更高的字符以 %UXXXX 格式编码。 setIniCodec() 中指定的编解码器对此行为没有影响。

键值以指定的编解码器写入,在本例中为 UTF-8。