Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.74/31: Рейтинг темы: голосов - 31, средняя оценка - 4.74
LedZeppelin
7 / 7 / 1
Регистрация: 19.04.2011
Сообщений: 68
#1

Неправильный вывод кириллицы в консоль

07.05.2011, 17:13. Просмотров 5490. Ответов 20
Метки нет (Все метки)

Здравствуйте уважаемые форумчане. Нуждаюсь в Вашем совете. Моя программа(ка ) выводит в консоль вместо кирилицы непонятные символы. При этом в файл все выводится как надо.
Что необходимо сделать что бы это исправить?

Не по теме:

такие действия как:SetConsoleCP(1251), SetConsoleOutputCP(1251);setlocale(LC_ALL,"Rus"); пробовал, не помогает

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.05.2011, 17:13
Ответы с готовыми решениями:

Неправильный вывод кириллицы в строках, заданных с консоли
Добрый день! Вот не как не могу доделать до конца программу, буду рад если...

Вывод кириллицы в консоль
Здравствуйте. Вообще-то я занимаюсь явой, но, для общего развития решил освоить...

Вывод кириллицы в консоль
Все правильно написал , сделал. #include <iostream> #include <windows.h>...

Вывод кириллицы в консоль
Привет, как изменить код что-бы выводилась русская "б" вместо иероглифов? ...

Ввод в строки и вывод в консоль кириллицы
Есть программа для подсчета количества букв в введенной строке,но если вводить...

20
BadBaddak
89 / 16 / 4
Регистрация: 09.06.2010
Сообщений: 100
07.05.2011, 17:28 #2
Попробуй транслитом писать. самый простой вариант
А если очень надо, читай прикреплённые темы про рус буквы. Или жди пока производители IDE добавят возможность кодировки cp866
1
LedZeppelin
7 / 7 / 1
Регистрация: 19.04.2011
Сообщений: 68
07.05.2011, 17:41  [ТС] #3
Цитата Сообщение от BadBaddak Посмотреть сообщение
Попробуй транслитом писать. самый простой вариант
А если очень надо, читай прикреплённые темы про рус буквы. Или жди пока производители IDE добавят возможность кодировки cp866
Добавят возможность ? Я пользуюсь MinGw, в нем есть такая опция? Насчет транслита, это же не пишу, это мне функция возвращает строку. И почему же в файл выводит нормально ?
0
dan_strong
6 / 6 / 0
Регистрация: 28.12.2010
Сообщений: 113
07.05.2011, 17:56 #4
прописывешь библиотеку <windows.h>, в мэйне пишешь: SetConsoleCP(1251); SetConsoleOutputCP(1251);
потом в свойствах командной строки выбери шрифт Lucida Console. должно помочь
1
LedZeppelin
7 / 7 / 1
Регистрация: 19.04.2011
Сообщений: 68
07.05.2011, 17:59  [ТС] #5
Цитата Сообщение от dan_strong Посмотреть сообщение
прописывешь библиотеку <windows.h>, в мэйне пишешь: SetConsoleCP(1251); SetConsoleOutputCP(1251);
потом в свойствах командной строки выбери шрифт Lucida Console. должно помочь
В моем случае такой вариант не проходит.
1
Mиxaил
534 / 439 / 162
Регистрация: 10.12.2009
Сообщений: 1,857
07.05.2011, 18:05 #6
Учи английский, пригодится... Ну или уже лучше последуй совету dan_strong! Это уж лучше, чем читать тупой транслит...

Добавлено через 1 минуту
dan_strong, лучше использовать
C++
1
#include <locale>
0
LedZeppelin
7 / 7 / 1
Регистрация: 19.04.2011
Сообщений: 68
07.05.2011, 18:10  [ТС] #7
Mиxaил, Не очень Вас понял на счет английского, извините. Прием описаный dan_strong мне известен, но тут он не работает.

Добавлено через 3 минуты
Цитата Сообщение от Mиxaил Посмотреть сообщение
dan_strong, лучше использовать
C++
1
#include <locale>
C++
1
#include <locale>
тоже не помогает.
0
Mиxaил
534 / 439 / 162
Регистрация: 10.12.2009
Сообщений: 1,857
07.05.2011, 18:16 #8
в какой среде работаете?
может
C++
1
2
3
    
 
#include <locale.h>
какой - нить
0
ForEveR
В астрале
Эксперт С++
7995 / 4754 / 651
Регистрация: 24.06.2010
Сообщений: 10,547
Завершенные тесты: 3
07.05.2011, 18:17 #9
А вы просто подключаете и все?) Или ставите нужную локаль?)
0
LedZeppelin
7 / 7 / 1
Регистрация: 19.04.2011
Сообщений: 68
07.05.2011, 18:18  [ТС] #10
Mиxaил, Пробовал компилировать в DEV C++, Code::Block, QT, VC++ 2010. Результат везде одинаков.
0
diagon
Higher
1937 / 1203 / 120
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
07.05.2011, 18:18 #11
C++
1
2
3
4
5
#include <iostream>
int main(){
    std::cout << "•Ґ««® ў®а«¤";
    return 0;
}
Попробуйте скомпилировать
1
LedZeppelin
7 / 7 / 1
Регистрация: 19.04.2011
Сообщений: 68
07.05.2011, 18:24  [ТС] #12
Цитата Сообщение от ForEveR Посмотреть сообщение
А вы просто подключаете и все?) Или ставите нужную локаль?)
Вот в таком виде:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
//....
#include "windows.h"
#include <locale.h>
//.....
 
int main()
{
    //SetConsoleCP(866 );
   // SetConsoleOutputCP(866 );
    //setlocale(LC_ALL,"Rus");
     SetConsoleCP(1251);
    SetConsoleOutputCP(1251 );
    setlocale(LC_ALL,"Rus");
//  .....
}
Добавлено через 3 минуты
Цитата Сообщение от diagon Посмотреть сообщение
C++
1
2
3
4
5
#include <iostream>
int main(){
    std::cout << "•Ґ««® ў®а«¤";
    return 0;
}
Попробуйте скомпилировать
Вывело Хелло ворлд
0
diagon
Higher
1937 / 1203 / 120
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
07.05.2011, 18:25 #13
Тогда вам поможет CharToOem
1
LedZeppelin
7 / 7 / 1
Регистрация: 19.04.2011
Сообщений: 68
07.05.2011, 18:32  [ТС] #14
diagon, Хм, интересно, сейчас попробую .

Добавлено через 5 минут
Цитата Сообщение от diagon Посмотреть сообщение
Тогда вам поможет CharToOem
Нет не помогло, символы поменялись, но остались нечитаемыми.
0
diagon
Higher
1937 / 1203 / 120
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
07.05.2011, 18:37 #15
Вышеприведенный текст в кодировке oem, возможно вы что-то неправильно делаете...
И это стоит использовать только при выводе на консоль, в файле такой текст будет нечитаемым.
0
LedZeppelin
7 / 7 / 1
Регистрация: 19.04.2011
Сообщений: 68
07.05.2011, 18:40  [ТС] #16
Цитата Сообщение от diagon Посмотреть сообщение
Вышеприведенный текст в кодировке oem, возможно вы что-то неправильно делаете...
И это стоит использовать только при выводе на консоль, в файле такой текст будет нечитаемым.
В файл как раз выводит по человечески, но мне необходимо так же в консоль.
0
diagon
Higher
1937 / 1203 / 120
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
07.05.2011, 18:43 #17
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream>
#include <windows.h>
char bufRus[256];
 
char* Rus(const char* text) {
      CharToOem(text, bufRus);
      return bufRus;
 }
int main()  {
    std::cout << Rus("Хелло ворлд")<< endl;
    return 0;
}
0
LedZeppelin
7 / 7 / 1
Регистрация: 19.04.2011
Сообщений: 68
07.05.2011, 18:45  [ТС] #18
diagon, Я сделал точно также. Но...
0
CVB
99 / 90 / 53
Регистрация: 22.03.2011
Сообщений: 226
08.10.2011, 19:20 #19
Цитата Сообщение от dan_strong Посмотреть сообщение
прописывешь библиотеку <windows.h>, в мэйне пишешь: SetConsoleCP(1251); SetConsoleOutputCP(1251);
потом в свойствах командной строки выбери шрифт Lucida Console. должно помочь
Все работает! У меня начальная проблема была иная, но вконце стала такой как ваша(вывод кирилицы в консоли)... вот ссылка на мой топик http://www.cyberforum.ru/cpp-beginne...ml#post2052056
0
Виктор_Сен
33 / 26 / 2
Регистрация: 01.08.2011
Сообщений: 176
08.10.2011, 19:55 #20
Я так решал эту проблему: добавляешь #include <iostream> и using namespace std; в исходный код, потом переопределяешь оператор вывода в поток:
C++
1
2
3
4
5
6
7
8
9
10
11
ostream &operator<<(ostream &stream, const char *str)
{
    char *outStr=new char[strlen(str)+1];
    CharToOemA(str,outStr);
    for (int i=0; outStr[i]!=0; i++)
    {
        stream<<outStr[i];
    }   
    delete[]outStr;
    return stream;
}
и выводишь, например, так: cout<<"Привет, мир!";

Добавлено через 6 минут
Да, ещё чуть не забыл, нужно добавить #include <windows.h> и #pragma comment(lib,"user32.lib")

Добавлено через 34 секунды
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
// MyOutStr.cpp: главный файл проекта.
 
#include "stdafx.h"
#include <iostream>
#include <windows.h>
 
#pragma comment(lib,"user32.lib")
 
using namespace System;
using namespace std;
 
ostream &operator<<(ostream &stream, const char *str)
{
    char *outStr=new char[strlen(str)+1];
    CharToOemA(str,outStr);
    for (int i=0; outStr[i]!=0; i++)
    {
        stream<<outStr[i];
    }   
    delete[]outStr;
    return stream;
}
 
 
int main(array<System::String ^> ^args)
{
    cout<<"Привет, мир!";
    system("pause");
    return 0;
}
0
08.10.2011, 19:55
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.10.2011, 19:55

Ввод/вывод кириллицы через консоль
Вот простейший пример ввода и вывода слова(символа) через консоль # include...

Можно ли как-то осуществить вывод кириллицы в консоль, не используя Lucida Console
Собственно сабж в заголовке. Есть способ оставить стандартный Consolas?

Вывод кириллицы
каким компилятором лучше пользоваться.я пользуюсь dev c++, но он в консоле не...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru