qt utf-8 character-encoding c-strings

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() ?



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