Установите кодировку Qt по умолчанию в UTF-8 - PullRequest
16 голосов
/ 03 января 2012

В моем приложении Qt мои файлы исходного кода кодируются как UTF-8.Для следующего кода ...

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

... когда я показываю это окно сообщения, символ "š" будет отображаться не как "š", а как что-то странное.Это потому, что Qt преобразует все C-строки, как если бы они были закодированы с использованием LATIN-1.Для решения этой проблемы я использовал:

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

Ответы [ 3 ]

29 голосов
/ 03 января 2012
2 голосов
/ 19 апреля 2018

setCodecForCStrings() устарело.Попробуйте вместо этого,

QTextCodec::setCodecForLocale(QTextCodec::codecForName("UTF-8"));

У меня это сработало.

0 голосов
/ 30 мая 2016

Относительно «предположения» о том, что «Qt5 предполагает, что все исходные файлы имеют кодировку UTF-8»: Тьяго Макиейра объясняет решение, принятое разработчиками Qt здесь .

Предположение может быть отключено с помощью QT_NO_CAST_FROM_ASCII в соответствии с документацией.

...