QSettings不能很好地处理unicode

时间:2011-11-08 07:45:47

标签: qt unicode qsettings

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

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

我想手动编辑设置文件,但我不能像这样使用它。有没有办法强制Qt以Unicode保存?

1 个答案:

答案 0 :(得分:16)

检查QSettings

setIniCodec功能
  

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

所以你应该用你想要的编解码器来调用它,例如

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

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