2012-01-02 15 views
16

Nella mia applicazione Qt i miei file di codice sorgente sono codificati come UTF-8. Per il seguente codice di ...Imposta la codifica predefinita Qt su UTF-8

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

... quando mostro che finestra di messaggio, il carattere "s" non verrebbe visualizzato come "S", ma come qualcosa di strano. Questo perché Qt converte tutte le stringhe C come se fossero codificate usando LATIN-1. Per risolvere questo ho usato:

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

Esiste un modo per sbarazzarsi di tutte le chiamate a QString::fromUtf8()?

+0

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

risposta

28
+0

Huh, sentirsi stupido in questo momento: DI non sapeva che esiste;) Grazie :) – xx77aBs

+1

Non supporre qualcosa come questo può essere fatto per qt5? Sembra setCodecForCStrings è stato rimosso ... – ntzrmtthihu777

+2

Ho paura di non poter rispondere con certezza perché non sto lavorando su nulla che usi più Qt. La mia ipotesi sarebbe che Qt5 presupponga che tutti i file sorgente siano codificati in UTF-8 (anziché in Latin-1), il che spiegherebbe perché l'hanno rimosso. Se hai un problema simile a questo, tutto quello che voglio è solo controllare che tutti i tuoi file sorgente siano codificati in UTF-8 usando l'editor di testo del tuo programmatore preferito (ad esempio Notepad ++)? –

0

Riguardo alla "ipotesi" che "Qt5 presuppone che tutti i file sorgente siano codificati in UTF-8": Thiago Macieira spiega la decisione presa dagli sviluppatori di Qt here.

L'ipotesi può essere disabilitata con QT_NO_CAST_FROM_ASCII in base alla documentazione.

Problemi correlati