Hi,

I try to create an ini file using QSettings with utf8 codec, but I can' get key right regardless what I do. Please advise where I do wrong.

Thanks.

Qt Code:
  1. #include <QApplication>
  2. #include <QSettings>
  3. #include <QTextCodec>
  4. #include <QDebug>
  5.  
  6. int main( int argc, char** argv )
  7. {
  8. QApplication app( argc, argv );
  9.  
  10. QTextCodec::setCodecForLocale( QTextCodec::codecForName( "utf8" ) );
  11.  
  12. QSettings settings( "Test.ini", QSettings::IniFormat );
  13. settings.setIniCodec( QTextCodec::codecForName( "utf8" ) );
  14.  
  15. settings.beginGroup( "LITH_SEC" );
  16.  
  17. settings.setValue( QString::fromUtf8( "介壳灰岩" ), QString::fromUtf8( "灰岩" ) );
  18. settings.setValue( QString::fromLocal8Bit( "介壳灰岩" ), QString::fromLocal8Bit( "灰岩" ) );
  19. settings.setValue( "介壳灰岩", "灰岩" );
  20. settings.setValue( QString( "介壳灰岩" ).toUtf8(), QString( "灰岩" ).toUtf8() );
  21. settings.setValue( QString( "介壳灰岩" ).toLocal8Bit(), QString( "灰岩" ).toLocal8Bit() );
  22.  
  23. settings.endGroup();
  24.  
  25. }
To copy to clipboard, switch view to plain text mode 

It produces the following file:

[LITH_SEC]
%U4ECB%U58F3%U7070%U5CA9=灰岩
%E4%BB%8B%E5%A3%B3%E7%81%B0%E5%B2%A9=ç<81>° ¥Â²Â©
%C3%A4%C2%BB%C2%8B%C3%A5%C2%A3%C2%B3%C3%A7%C2%81%C 2%B0%C3%A5%C2%B2%C2%A9=@ByteArray(çÂ<81 >°å²©)