Establezca la codificación predeterminada de Qt en UTF-8
character-encoding c-strings (3)
En mi aplicación Qt, mis archivos de código fuente están codificados como UTF-8. Para el siguiente código ...
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 "š" no se mostrará como "š", sino como algo extraño. Esto se debe a que Qt convierte todas las cadenas en C como si estuvieran codificadas utilizando LATIN-1. Para resolver esto 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()
?
¿Ha intentado usar QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8")) ?
Con respecto 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 .
El supuesto se puede desactivar con QT_NO_CAST_FROM_ASCII
acuerdo con la documentación.
setCodecForCStrings()
había quedado en desuso. Intenta en su lugar,
QTextCodec::setCodecForLocale(QTextCodec::codecForName("UTF-8"));
Funciono para mi