2011-11-08 5 views
6

J'utilise QSettings pour stocker certains paramètres dans un fichier INI. Cependant, mon programme n'est pas en anglais, donc certains des paramètres contiennent des chaînes Unicode. Il semble que Qt écrit des fichiers INI non pas dans utf8 ou utf16, mais dans un autre encodage, la chaîne "Привет мир!" (. Rus « Bonjour tout le monde ») ressemble à ceci:QSettings ne gère pas bien unicode

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

Je veux modifier les paramètres fichier manuellement, mais je ne peux pas travailler tout à fait avec elle comme ça. Existe-t-il un moyen de forcer Qt à enregistrer en Unicode?

Répondre

16

Vérifiez la fonction setIniCodec de QSettings

Définit le codec pour accéder à des fichiers INI (y compris .conf sur Unix) au codec. Le codec est utilisé pour décoder toutes les données lues à partir du fichier INI et pour coder toutes les données écrites dans le fichier. Par défaut, aucun codec n'est utilisé et les caractères non-ASCII sont codés en utilisant des séquences d'échappement INI standard.

donc vous devriez l'appeler avec le codec que vous voulez, par exemple

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

Notez que vous devez appeler immédiatement après avoir créé les objets QSettings et avant d'accéder aux données.

+0

Merci. Dommage que je suis déjà en utilisant QJson pour le fichier de configuration :) – Septagram

+0

Fonctionne parfaitement, j'ai supprimé QJson, donc une dépendance de moins)) – Septagram

+0

Bon à savoir :) – pnezis

Questions connexes