2012-01-02 29 views
16

Qt uygulamasında kaynak kod dosyam UTF-8 olarak kodlandı. O mesaj kutusu gösterdiğinizde aşağıdaki kodu için ... Qt varsayılan kodlamasını UTF-8 olarak ayarla

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

..., karakter "š" "s" olarak görüntülenir, ancak garip bir şey olarak olmaz. Bunun nedeni Qt'nin tüm C dizelerini LATIN-1 kullanılarak kodlanmış gibi dönüştürmesidir. Ben kullanıyorum bu çözmek için:

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

QString::fromUtf8() tüm aramaların kurtulmak için bir yol var mı?

+0

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

cevap

28
+0

Huh, şu anda aptalca hissediyorum: DI olduğunu bilmiyordum;) Teşekkürler :) – xx77aBs

+1

Şunun gibi bir şey düşünmeyin Bu qt5 için yapılabilir? Görünüşe göre setCodecForCStrings kaldırıldı ... – ntzrmtthihu777

+2

Korkarım ki artık Qt kullanan herhangi bir şey üzerinde çalışmadığımdan emin değilim. Tahminimce, Qt5'in tüm kaynak dosyaların neden bunları kaldırdıklarını açıklayan UTF-8 kodlu (Latin-1 yerine) olduğunu varsayar. Buna benzer bir sorun yaşıyorsanız, tüm kaynak dosyalarınızı favori programcınızın metin editörü (örn. Notepad ++) kullanarak kodlanmış UTF-8 olup olmadığını kontrol etmek mi istiyorsunuz? –

0

"Qt5, tüm kaynak dosyalarının UTF-8 kodlu olduğunu varsayar" şeklindeki "tahmin" ile ilgili olarak: Thiago Macieira, QT geliştiricileri here tarafından verilen kararı açıklıyor.

Varsayım, belgelere göre QT_NO_CAST_FROM_ASCII ile devre dışı bırakılabilir.