Russian Qt Forum
Май 08, 2024, 15:02 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Кирилица в QT Creator  (Прочитано 9647 раз)
Kostya
Гость
« : Ноябрь 15, 2011, 23:12 »

Добрый вечер!
Когда пишу консольную программу и при выводе текста на экран монитора латиницей - все в порядке, а при выводе кириллицей пишутся иероглифы. Подскажите как выводить сообщение в консольной программе кириллицей.

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

С уважением Kostya!!!
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4727



Просмотр профиля WWW
« Ответ #1 : Ноябрь 15, 2011, 23:43 »

Код
C++ (Qt)
qDebug() << QString::fromUtf8("русская строка");
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
LisandreL
Птица говорун
*****
Offline Offline

Сообщений: 984


Надо улыбаться


Просмотр профиля
« Ответ #2 : Ноябрь 16, 2011, 00:10 »

Код:
QTextCodec::setCodecForCStrings( QTextCodec::codecForName( "UTF-8" ) ); //вместо UTF-8, кодировку, в которой у вас исходники.
#ifdef Q_OS_WIN32
QTextCodec:setCodecForLocale( QTextCodec::codecForName( "CP866" ) ); //кодировка консоли
#endif
Записан
Kostya
Гость
« Ответ #3 : Ноябрь 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!!!

Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4727



Просмотр профиля WWW
« Ответ #4 : Ноябрь 16, 2011, 18:17 »

первой строчкой в функцию main()
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Kostya
Гость
« Ответ #5 : Ноябрь 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!!!
Записан
lesav
Частый гость
***
Offline Offline

Сообщений: 235


qnx.org.ru


Просмотр профиля WWW
« Ответ #6 : Ноябрь 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;
}
Записан

Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #7 : Ноябрь 16, 2011, 22:30 »

Мыши плакали и кололись, но продолжали грызть кактус...
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Kostya
Гость
« Ответ #8 : Ноябрь 16, 2011, 23:10 »

Большое спасибо за ответ!!!

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

Буду очень благодарен!
С уважением Kostya!
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #9 : Ноябрь 17, 2011, 07:25 »

Прошу разъясните пожалуйста что такое исходники и почему там нельзя использовать русский текст.
Исходники - это твой код. Нельзя потому, что если бы ты не использовал в исходниках символов кириллицы, проблемы бы не было - это же очевидно.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Kostya
Гость
« Ответ #10 : Ноябрь 17, 2011, 13:22 »

Целиком с Вами согласен!!!

Большое спасибо за совет!
С уважением Kostya!!!
Записан
lesav
Частый гость
***
Offline Offline

Сообщений: 235


qnx.org.ru


Просмотр профиля WWW
« Ответ #11 : Ноябрь 17, 2011, 20:53 »

... если бы не использовал в исходниках символов кириллицы, проблемы бы не было - это же очевидно.
Вижу в этом смысл, если проект большой и/или коммерческий.
А в учебных целях даже полезно натыкаться на ошибки. Все через это прошли.


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

Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.096 секунд. Запросов: 22.