2012-01-02 43 views
16

En mi aplicación Qt mis archivos de código fuente están codificados como UTF-8. Para el siguiente código ...Establezca la codificación predeterminada de Qt en UTF-8

QMessageBox::critical(this, "Nepoznata pogreška", "Dogodila se nepoznata pogreška! Želite li zatvoriti ovaj program ?", QMessageBox::Yes, QMessageBox::No); 

... cuando muestro ese cuadro de mensaje, el carácter "s" no se mostrará como "S", sino como algo extraño. Esto se debe a que Qt convierte todas las cadenas en C como si estuvieran codificadas usando LATIN-1. Para resolver este He estado usando:

QMessageBox::critical(this, QString::fromUtf8("Nepoznata pogreška"), QString::fromUtf8("Dogodila se nepoznata pogreška! Želite li zatvoriti ovaj program ?"), QMessageBox::Yes, QMessageBox::No); 

¿Hay una manera de deshacerse de todas las llamadas a QString::fromUtf8()?

+0

http://stackoverflow.com/questions/29485602/qt-convert-unicode-entites – trante

Respuesta

28
+0

Huh, sintiéndose estúpido en este momento: DI no sabía que existe;) Gracias :) – xx77aBs

+1

No supongo algo como esto se puede hacer para qt5? Parece que se ha eliminado setCodecForCStrings ... – ntzrmtthihu777

+2

Me temo que no puedo responder con certeza ya que no estoy trabajando en nada que use Qt nunca más. Supongo que Qt5 supone que todos los archivos fuente están codificados en UTF-8 (en lugar de Latin-1) lo que explicaría por qué eliminaron esto. Si tiene un problema similar al de este, lo único que haría es verificar que todos sus archivos fuente estén codificados en UTF-8 utilizando el editor de texto de su programador favorito (por ejemplo, Notepad ++). –

0

En cuanto a la "suposición" de que "Qt5 asume que todos los archivos fuente están codificados en UTF-8": Thiago Macieira explica la decisión tomada por los desarrolladores de Qt here.

La suposición se puede desactivar con QT_NO_CAST_FROM_ASCII de acuerdo con la documentación.

Cuestiones relacionadas