БлогNot. QT: вывод кириллицы через qDebug()

QT: вывод кириллицы через qDebug()

На самом деле, нужно было упаковать и распаковать стандартными функциями QByteArray с кириллицей, а оказалось, что кириллица в qDebug() "не идёт", хотя теоретически всё в кодировке UTF-8 же?

Оказалось, всё дело в setlocale. После её вызова в QT 5.10.1 вот такая штука работает прекрасно, тип проекта - "Консольное приложение QT":

#include <QtCore>

int main() {
 setlocale(LC_ALL, "");
 QByteArray text = "Текст";
 QByteArray compressed = qCompress(text);
 qDebug() << compressed; //выводим сжатый текст
 qDebug() << QString::fromUtf8(qUncompress(compressed)); //и разжатый

 qDebug() << QString("проверка кириллицы");
 return 0;
}

"Обычный" вывод кириллической строки QString тоже работает.

И ещё - конкретно в версии QT 5.5 есть вот такая проблема с qDebug() (вывод не-латиницы как кодов Юникода, а не символов), в более поздних сборках это изменение откатили назад.


теги: qt

показать комментарии (1)

25.03.2019, 16:53; рейтинг: 608