QTextStream кодирование акцентуации

Я изучаю Qt с Qt5.1, и у меня есть проблемы с кодированием в акцентуации. Я пишу программы с выходами на португальском языке и всегда должен использовать акценты. Проблема может быть продемонстрирована в следующем коде:

\#include < QDebug>

\#include < QTextStream>

\#include < QString>

int main(){

QTextStream out(stdout);

qDebug() << "Olá Mundo!";

out << QString("Olá Mundo!") << endl;

out << "Olá Mundo!" << endl;
}
  • «Olá Mundo» — это Hello World на португальском языке.

Выход:

Ола Мундо!

Ола Мундо!

Ол Мундо!

Эта третья «Ола Мундо» не так. Мне всегда нужно использовать QString для правильной печати вывода, или есть какой-то способ, чтобы последняя строка была напечатана правильно (без объявления Qstring)? И почему qDebug показывает правильно?

1

Решение

Вы можете установить кодек для ISO 8859-1 (out.setCodec("ISO 8859-1")).
Тогда вы можете написать out << "Olá Mundo!" << endl; Но потом out << QString("Olá Mundo!") << endl; больше не будет работать Это просто потому, что оператор QTextStream<<(const char * string) ожидает строку в ISO 8859-1 и оператор<<(const QString & string) QString в UTF-8. Кодеком по умолчанию для QTextStream является UTF-8.

qDebug внутренне преобразует строку в UTF-8. Вот почему вы можете написать qDebug() << "Olá Mundo!";

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]