2011-11-08 14 views
6

Sto usando QSettings per memorizzare alcune impostazioni in un file INI. Tuttavia, il mio programma non è in inglese, quindi alcune delle impostazioni contengono stringhe Unicode. Sembra che Qt scriva i file INI non in utf8 o utf16, ma in qualche altra codifica, la stringa "Привет мир!" (. Rus "Ciao mondo") si presenta così:QSettings non gestisce il pozzetto unicode

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

Voglio modificare file di impostazioni a mano, ma non posso abbastanza lavoro con in questo modo. C'è un modo per forzare Qt per salvare in Unicode?

risposta

16

Controllare la funzione di setIniCodecQSettings

Imposta il codec per l'accesso ai file INI (compresi i file .conf su Unix) al codec. Il codec viene utilizzato per la decodifica di qualsiasi dato letto da il file INI e per la codifica di tutti i dati scritti nel file. Per impostazione predefinita, non viene utilizzato alcun codec e i caratteri non ASCII sono codificati utilizzando sequenze di escape INI standard.

così si dovrebbe chiamare con il codec che si desidera, ad esempio

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

Si noti che è necessario chiamare immediatamente dopo aver creato gli oggetti QSettings e prima di accedere a tutti i dati.

+0

Grazie. Peccato Sto già usando QJson per il file di configurazione :) – Septagram

+0

Funziona perfettamente, ho rimosso QJson, quindi una dipendenza in meno)) – Septagram

+0

Bello sapere :) – pnezis

Problemi correlati