Неправильный вывод qDebug() (UTF - 8)

Я пытаюсь сохранить строку со специальными символами::

qDebug() << "ÑABCgÓ";

Выходы: (здесь я даже не могу набрать правильный вывод, что после Ã & Ã отсутствует мусор) ÃABCgÃ

Я подозреваю, что некоторые UTF-8 / Latin1 / ASCII, но не могу найти настройки для вывода на консоль / файл. Что я написал в своем коде: "С ABCg".

(Qt: 4.8.5 / Ubunto 12.04 / C++ 98)

2 ответа

Решение

Вы могли бы использовать QString QString::fromUtf8(const char * str, int size = -1) [static] как пример кода представляет это ниже. Это одна из главных причин существования QString.

Подробности смотрите в документации:

http://qt-project.org/doc/qt-5.1/qtcore/qstring.html

main.cpp

#include <QString>
#include <QDebug>

int main()
{
    qDebug() << QString::fromUtf8("ÑABCgÓ");
    return 0;
}

Сборка (настроить под свой сценарий)

g++ -fPIC -I/usr/include/qt -I/usr/include/qt/QtCore -lQt5Core main1000.cpp && ./a.out

Выход

"ÑABCgÓ"

Это, как говорится, в зависимости от вашего региона, просто qDebug() << "ÑABCgÓ"; может работать так же, как здесь, но рекомендуется убедиться, явно задавая UTF-8.

Попробуй это:

 QTextCodec *codec = QTextCodec::codecForName("UTF-8");
 QTextCodec::setCodecForCStrings(codec);
 qDebug() << "ÑABCgÓ";
Другие вопросы по тегам