如何使用 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..z
、A..Z
、0..9
、_
、-
除外, 或 .
) 以 %XX
十六进制格式编码,更高的字符以 %UXXXX
格式编码。 setIniCodec()
中指定的编解码器对此行为没有影响。
键值以指定的编解码器写入,在本例中为 UTF-8。
我的代码片段在这里:
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..z
、A..Z
、0..9
、_
、-
除外, 或 .
) 以 %XX
十六进制格式编码,更高的字符以 %UXXXX
格式编码。 setIniCodec()
中指定的编解码器对此行为没有影响。
键值以指定的编解码器写入,在本例中为 UTF-8。