2011-11-08 10 views
6

Estoy usando QSettings para almacenar algunas configuraciones en un archivo INI. Sin embargo, mi programa no está en inglés, por lo que algunas configuraciones contienen cadenas Unicode. Parece que Qt escribe archivos INI no en utf8 o utf16, pero en otra codificación, la cadena "Привет мир!" (. Rus "¡Hola mundo") es el siguiente:QSettings no maneja el pozo Unicode

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

quiero editar el archivo de configuración a mano, pero no puedo bastante trabajo con él de esta manera. ¿Hay alguna manera de forzar a Qt a guardar en Unicode?

Respuesta

16

comprobar la función de setIniCodecQSettings

Establece el códec para acceder a los archivos INI (incluyendo archivos .conf en Unix) a códec. El códec se utiliza para decodificar cualquier dato que se lea desde el archivo INI, y para codificar cualquier dato que se escriba en el archivo. De forma predeterminada, no se utiliza códec y los caracteres que no son ASCII se codifican utilizando secuencias de escape INI estándar.

por lo que debería llamarlo con el códec que desee, por ejemplo

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

Observe que debe llamar inmediatamente después de crear los objetos QSettings y antes de acceder a cualquier dato.

+0

Gracias. Lástima que ya estoy usando QJson para el archivo de configuración :) – Septagram

+0

Funciona perfectamente, eliminé QJson, por lo que una dependencia menos)) – Septagram

+0

Es bueno saber :) – pnezis

Cuestiones relacionadas