2012-01-02 18 views
16

W mojej aplikacji Qt moje pliki z kodem źródłowym są kodowane jako UTF-8. Na poniższym kodzie ...Ustaw domyślne kodowanie Qt na UTF-8

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

... kiedy pokazują, że okno komunikatu, znak „S” nie być wyświetlany jako „S”, ale jako coś dziwnego. Dzieje się tak, ponieważ Qt konwertuje wszystkie C-stringi tak, jakby były kodowane za pomocą LATIN-1. Aby rozwiązać ten problem Używam:

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

Czy istnieje sposób, aby pozbyć się wszystkich wywołań QString::fromUtf8()?

+0

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

Odpowiedz

28
+0

Huh, czując się głupio w tej chwili: DI nie wiedział, że istnieje;) Dzięki :) – xx77aBs

+1

Nie przypuszczam czegoś podobnego to można zrobić dla qt5? Wydaje się, że setCodecForCStrings został usunięty ... – ntzrmtthihu777

+2

Obawiam się, że nie mogę odpowiedzieć na pewno, ponieważ nie pracuję nad czymkolwiek, co już używa Qt. Domyślam się, że Qt5 zakłada, że ​​wszystkie pliki źródłowe są kodowane w UTF-8 (a nie Latin-1), co tłumaczyłoby, dlaczego je usunęli. Jeśli masz podobny problem, to po prostu sprawdziłbym, czy wszystkie pliki źródłowe są kodowane w UTF-8 za pomocą edytora tekstów twojego ulubionego programisty (np. Notepad ++)? –

0

Odnośnie "zgadywania", że "Qt5 zakłada wszystkie pliki źródłowe są kodowane w UTF-8": Thiago Macieira wyjaśnia decyzję podejmowaną przez deweloperów Qt: here.

Założenie można wyłączyć za pomocą QT_NO_CAST_FROM_ASCII zgodnie z dokumentacją.

Powiązane problemy