Russian Qt Forum

Qt => Вопросы новичков => Тема начата: Kostya от Ноябрь 15, 2011, 23:12



Название: Кирилица в QT Creator
Отправлено: Kostya от Ноябрь 15, 2011, 23:12
Добрый вечер!
Когда пишу консольную программу и при выводе текста на экран монитора латиницей - все в порядке, а при выводе кириллицей пишутся иероглифы. Подскажите как выводить сообщение в консольной программе кириллицей.

Заранее благодарен за подсказку!!

С уважением Kostya!!!


Название: Re: Кирилица в QT Creator
Отправлено: kambala от Ноябрь 15, 2011, 23:43
Код
C++ (Qt)
qDebug() << QString::fromUtf8("русская строка");


Название: Re: Кирилица в QT Creator
Отправлено: LisandreL от Ноябрь 16, 2011, 00:10
Код:
QTextCodec::setCodecForCStrings( QTextCodec::codecForName( "UTF-8" ) ); //вместо UTF-8, кодировку, в которой у вас исходники.
#ifdef Q_OS_WIN32
QTextCodec:setCodecForLocale( QTextCodec::codecForName( "CP866" ) ); //кодировка консоли
#endif


Название: Re: Кирилица в QT Creator
Отправлено: Kostya от Ноябрь 16, 2011, 16:04
Большое спасибо за ответ!

Хочу немного уточнить. Файл консольной программы у меня main.cpp, есть еще файл example.pro
Пример файла main.cpp следующий:


Код:
//файл main.cpp
//Рис. 1.а Консольный ввод/вывод коментарии

#include <iostream.h>
#define N 12


main()
{
    cout<<"*****Начало******";
    int i, j, k, l;
    i=j=2;
    double d=.781;
    char f='&';
    cout<<"\n"<<"i="<<i<<"\n"<<"j="<<j<<' '<<"d="<<d<<"\n"<<"f="<<f;
    l=N;
    cout<<"\n"<<"l="<<l;
    cout<<"\n"<<"Вывести число k ";
    cin>>k;
    cout<<"k="<<k;
    cout<<"\n"<<"l*j="<<l*j<<' '<<"d+k="<<d+k<<"End";
    system("pause");
    return 0;
}

А пример файла example.pro такой:

Код:
#-------------------------------------------------
#
# Project created by QtCreator 2011-11-14T20:44:45
#
#-------------------------------------------------

QT       -= gui

TARGET = example
CONFIG   += console
CONFIG   -= app_bundle

TEMPLATE = app

SOURCES += main.cpp

Прошу уточнить в какой файл или в какой из приведенных фрагментов кода можно вставить написанные Вами записи.
Заранее благодарен!!!
С уважением Kostya!!!



Название: Re: Кирилица в QT Creator
Отправлено: kambala от Ноябрь 16, 2011, 18:17
первой строчкой в функцию main()


Название: Re: Кирилица в QT Creator
Отправлено: Kostya от Ноябрь 16, 2011, 22:09
Прочитал Ваш совет и вставил предложенный код первой строкой в функцию main() и вот что получилось:


Код:
//файл main.cpp
//Рис. 1.а Консольный ввод/вывод коментарии

#include <iostream.h>
#include <QString>
#include <qDebug>
#define N 12


main()
{
    qDebug() << QString::fromUtf8("русская строка");
    cout<<"*****Начало******";
    int i, j, k, l;
    i=j=2;
    double d=.781;
    char f='&';
    cout<<"\n"<<"i="<<i<<"\n"<<"j="<<j<<' '<<"d="<<d<<"\n"<<"f="<<f;
    l=N;
    cout<<"\n"<<"l="<<l;
    cout<<"\n"<<"Вывести число k ";
    cin>>k;
    cout<<"k="<<k;
    cout<<"\n"<<"l*j="<<l*j<<' '<<"d+k="<<d+k<<"End";
    system("pause");
    return 0;
}

Программа запускается, но к сожалению в консоли опять отображаются иероглифы.

Буду благодарен за совет!
С уважением Kostya!!!


Название: Re: Кирилица в QT Creator
Отправлено: lesav от Ноябрь 16, 2011, 22:20
Код
C++ (Qt)
main()
{
  QTextCodec::setCodecForCStrings( QTextCodec::codecForName( "UTF-8" ) ); //вместо UTF-8, кодировку, в которой у вас исходники.
#ifdef Q_OS_WIN32
  QTextCodec:setCodecForLocale( QTextCodec::codecForName( "CP866" ) ); //кодировка консоли
#endif
   qDebug() << QString::fromUtf8("русская строка");
   cout<<"*****Начало******";
.....
   return 0;
}


Название: Re: Кирилица в QT Creator
Отправлено: Пантер от Ноябрь 16, 2011, 22:30
Мыши плакали и кололись, но продолжали грызть кактус...


Название: Re: Кирилица в QT Creator
Отправлено: Kostya от Ноябрь 16, 2011, 23:10
Большое спасибо за ответ!!!

Прошу разъясните пожалуйста что такое исходники и почему там нельзя использовать русский текст.

Буду очень благодарен!
С уважением Kostya!


Название: Re: Кирилица в QT Creator
Отправлено: Пантер от Ноябрь 17, 2011, 07:25
Прошу разъясните пожалуйста что такое исходники и почему там нельзя использовать русский текст.
Исходники - это твой код. Нельзя потому, что если бы ты не использовал в исходниках символов кириллицы, проблемы бы не было - это же очевидно.


Название: Re: Кирилица в QT Creator
Отправлено: Kostya от Ноябрь 17, 2011, 13:22
Целиком с Вами согласен!!!

Большое спасибо за совет!
С уважением Kostya!!!


Название: Re: Кирилица в QT Creator
Отправлено: lesav от Ноябрь 17, 2011, 20:53
... если бы не использовал в исходниках символов кириллицы, проблемы бы не было - это же очевидно.
Вижу в этом смысл, если проект большой и/или коммерческий.
А в учебных целях даже полезно натыкаться на ошибки. Все через это прошли.


К томуж решить проблему вывода в виндовскую консоль Ваш совет вряд ли поможет.