Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 36, средняя оценка - 4.97
vpnwz151
10 / 11 / 1
Регистрация: 03.11.2011
Сообщений: 129
#1

Локализация, русский текст выводит иероглифы - C++

10.06.2012, 01:48. Просмотров 6295. Ответов 17
Метки нет (Все метки)

Не могу понять почему когда ввожу русский текст выводит иероглифы
А тот что в программе нормально показывает

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
#include <locale.h>
using namespace std;
 
int main()
{   
    setlocale( LC_ALL, "Russian");
    cout<<"Введите текст: ";
    char num [80];
    cin.getline(num,80);
    cout<<"То что ввели: ";
    cout<<num;
    cin.get();
 
return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.06.2012, 01:48
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Локализация, русский текст выводит иероглифы (C++):

пдскажите функцию которая выводит русский текст на экран и его заголовочный файл с++ но не system ( " echo текст " ); - C++
пдскажите функцию которая выводит русский текст на экран и его заголовочный файл с++ но не system ( &quot; echo текст &quot; );

Выводит иероглифы - C++
Есть массив строк, заполняю его нужной инф. и вывожу. string ans = { &quot;mon&quot;, &quot;tue&quot;, &quot;wed&quot;, &quot;thu&quot;, &quot;fri&quot;, &quot;sat&quot;, &quot;sun&quot; }; void...

Выводит из файла иероглифы - C++
Здравствуйте! Программа должна запрашивать: ФИО, курс обучения, специальность и имя файла, а потом прочитать все данные из файла. Но когда...

MessageBox выводит иероглифы - C++
MessageBox(NULL, reinterpret_cast&lt;LPCTSTR&gt;(&quot;Hello world&quot;), reinterpret_cast&lt;LPCTSTR&gt;(&quot;windows&quot;), MB_OK); Почему вместо строк Hello world...

MessageBox выводит иероглифы место текста с++ - C++
CString sMsg; char buf; int nRead = fileIn.Read( buf , sizeof(buf)); sMsg.Format( L&quot;%s&quot;, buf); MessageBox( sMsg,...

Почему не компилирует слова по русски, а выводит иероглифы какието? что для этого сделать надо? - C++
Почему не компилирует слова по русски, а выводит иероглифы какието? что для этого сделать надо?

17
dima koz
23 / 17 / 1
Регистрация: 05.06.2012
Сообщений: 72
Записей в блоге: 5
10.06.2012, 02:41 #2
std::setlocale(LC_CTYPE,"Russian");

так попробуй
0
vpnwz151
10 / 11 / 1
Регистрация: 03.11.2011
Сообщений: 129
10.06.2012, 02:54  [ТС] #3
Не помогло,
Когда
C++
1
setlocale(LC_CTYPE,"utf8");
Текст который я вожу кириллицей выводит нормально а вот тот что в коде иероглифами
Какие есть варианты еще?
0
novi4ok
551 / 504 / 8
Регистрация: 23.07.2009
Сообщений: 2,359
Записей в блоге: 1
10.06.2012, 03:07 #4
какая visual studio? или вообще среда разработки?
0
vpnwz151
10 / 11 / 1
Регистрация: 03.11.2011
Сообщений: 129
10.06.2012, 03:35  [ТС] #5
visual studio 2010
0
defer
秘密
555 / 235 / 3
Регистрация: 29.11.2010
Сообщений: 783
10.06.2012, 03:40 #6
так можно

C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
#include <windows.h>
using namespace std;
 
inline const char* OEM(const char *chars)
{
    static char buf[256];
    CharToOem((LPSTR)chars,buf);
    return buf;
}
 
int main()
{
    cout<<OEM("Введите текст: ");
    char num [80];
    cin.getline(num,80);
    cout<<OEM("То что ввели: ");
    cout<<num;
    cin.get();
    return 0;
}
2
vpnwz151
10 / 11 / 1
Регистрация: 03.11.2011
Сообщений: 129
10.06.2012, 03:47  [ТС] #7
IntelliSense: argument of type "LPSTR" is incompatible with parameter of type "LPCWSTR"
Error 1 error C2664: 'CharToOemW' : cannot convert parameter 1 from 'LPSTR' to 'LPCWSTR'
вот что пишет
0
defer
秘密
555 / 235 / 3
Регистрация: 29.11.2010
Сообщений: 783
10.06.2012, 03:55 #8
в настройках проекта включите использовать многобайтную кодировку
0
vpnwz151
10 / 11 / 1
Регистрация: 03.11.2011
Сообщений: 129
10.06.2012, 04:24  [ТС] #9
Немного пошаманил сделал по своему
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
#include <windows.h>
using namespace std;
 
int main()
{ 
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
 
    char num [80];
 
    cout<<"Введите текст: ";
    cin.getline(num,80);
 
    cout<<"Ваш текст: ";
    cout<<num;
 
    cin.get();
return 0;
}
Работает Украинский, Русский
1
Dragokas
Эксперт WindowsАвтор FAQ
16122 / 6941 / 834
Регистрация: 25.12.2011
Сообщений: 10,722
Записей в блоге: 16
17.06.2012, 23:06 #10
vpnwz151, не хватает еще чего-то. У меня все на крякозябрах, в т.ч. приглашение и входящий поток (у меня MS VS 2010 Express).

Вот такой пример мне понравится краткостью:
C
1
system("chcp 1251");
1. Но в каком из окон менять шрифт на Lucidia (скрин) ?
2. Что дописать, чтобы не отображалось "Кодовая страница изменена на ..." ?
0
Миниатюры
Локализация,  русский текст выводит иероглифы  
dima koz
23 / 17 / 1
Регистрация: 05.06.2012
Сообщений: 72
Записей в блоге: 5
17.06.2012, 23:19 #11
есть такая тема на форуме, может там посмотреть?

Русские шрифты в консоли
0
Dragokas
Эксперт WindowsАвтор FAQ
16122 / 6941 / 834
Регистрация: 25.12.2011
Сообщений: 10,722
Записей в блоге: 16
17.06.2012, 23:42 #12
dima koz, я в курсе прочитал ее всю. Ответа в точности на мои вопросы там не было.
0
dima koz
23 / 17 / 1
Регистрация: 05.06.2012
Сообщений: 72
Записей в блоге: 5
18.06.2012, 00:05 #13
Цитата Сообщение от Diskretor Посмотреть сообщение
Вот такой пример мне понравится краткостью:
C
1
system("chcp 1251");
2. Что дописать, чтобы не отображалось "Кодовая страница изменена на ..." ?
вывод сообщений можно перенаправлять, примерно, так :
C++
1
system("chcp 1251>>null");
но системные команды использовать - не есть правильно
1
Dragokas
Эксперт WindowsАвтор FAQ
16122 / 6941 / 834
Регистрация: 25.12.2011
Сообщений: 10,722
Записей в блоге: 16
18.06.2012, 03:19 #14
Разобрался. Банально правый клик по заголовку запущенного ехе-шника, свойства, шрифт.
Но как сделать, чтобы при закрытии/открытии проекта эта настройка не сбрасывалась?

Цитата Сообщение от dima koz Посмотреть сообщение
системные команды использовать - не есть правильно
применительно к каким ситуациям?
0
nesquick
0 / 0 / 0
Регистрация: 09.04.2012
Сообщений: 25
18.06.2012, 03:22 #15
setlocale(0,"Rus"); у меня так все работает
0
18.06.2012, 03:22
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.06.2012, 03:22
Привет! Вот еще темы с ответами:

Не выводит русский после сортировки - C++
Не выводит русский маршрутов после сортировки #include &lt;iostream&gt; #include &lt;string&gt; using namespace std; // Структура...

Написать программу, которая считывает текст из файла и выводит на экран количество гласных букв в строке текст - C++
Написать программу, которая считывает текст из файла и выводит на экран количество гласных букв в строке текста

Русский текст - C++
Помогите сделать на русском в консоли ввод и вывод! Пишу в консоли русскими а выдаёт иероглифы! #include &lt;iostream&gt; #include...

Русский текст в консоли - C++
Пользуюсь книгой для обучения visual с++, дан базовый код #include &lt;iostream&gt; using std::cout; using std::endl; int main() { ...


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

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

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