С наступающим Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
watersoda
0 / 0 / 0
Регистрация: 04.04.2015
Сообщений: 97
1

Как задать кодировку для заголовка окна?

04.04.2015, 16:37. Просмотров 1139. Ответов 19
Метки нет (Все метки)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include<iostream>
#include<windows.h>
using namespace std;
int main()
{
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
SetConsoleTitle("Русский текст в консоли");
string c;
do
{
cout << "Русский текст?! Да ладно!" << endl;
cout << endl;
cout << "Выйти из программы?" << endl;
cout << "Для выхода из программы нажмите клавишу 'д'," << endl;
cout << "для продолжения работы - клавишу 'н': ";
cin >> c;
cout << endl;
}
while(c != "д");
return 0;
}
Кодировки для потоков ввода/вывода заданы. Остался вопрос: как сделать то же самое для заголовка окна (SetConsoleTitle())?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.04.2015, 16:37
Ответы с готовыми решениями:

Как задать кодировку для TextOut?
Как задать кодировку для TextOut?

Как на сервере задать кодировку символов
Спасибо еще такой вопрос у меня есть tcp сервер на него с клиента приходят...

Как задать кодировку при записи в файл или чтения из него
У меня блокнот Notepad++, своей программой я записываю в некоторый текстовый...

Как внести изменения в строку заголовка окна?
Как в строке заголовке окна заменить иконку, предлагаемую AppWizard'ом по...

Изменение заголовка окна программы в консоли
Здравствуйте. Нужна помощь. Как сделать так, чтобы окно программы в консоли...

19
nmcf
6517 / 5746 / 2617
Регистрация: 14.04.2014
Сообщений: 24,494
04.04.2015, 16:42 2
C++
1
SetConsoleTitleW(L"Русский текст в консоли");
0
watersoda
0 / 0 / 0
Регистрация: 04.04.2015
Сообщений: 97
04.04.2015, 20:07  [ТС] 3
Попробовал применить SetConsoleTitleW(L"Русский текст в консоли");
при компиляции получил сообщение:
locale.cpp:8 Illegal byte sequence
0
nmcf
6517 / 5746 / 2617
Регистрация: 14.04.2014
Сообщений: 24,494
04.04.2015, 20:27 4
В какой среде программируешь?
0
watersoda
0 / 0 / 0
Регистрация: 04.04.2015
Сообщений: 97
04.04.2015, 20:29  [ТС] 5
Цитата Сообщение от nmcf Посмотреть сообщение
В какой среде программируешь?
wxDev-C++
0
nmcf
6517 / 5746 / 2617
Регистрация: 14.04.2014
Сообщений: 24,494
04.04.2015, 20:52 6
Даже не знаю. А кодировка файла с текстом программы какая? Вообще русские буквы не работают?
0
watersoda
0 / 0 / 0
Регистрация: 04.04.2015
Сообщений: 97
04.04.2015, 20:59  [ТС] 7
Цитата Сообщение от nmcf Посмотреть сообщение
Даже не знаю. А кодировка файла с текстом программы какая? Вообще русские буквы не работают?
1251
Русские буквы отображаются и вводятся (при вопросе о выходе из программы) везде корректно, кроме заголовка окна. Выложил бы скриншот, но не знаю, как сюда файл приаттачить.
0
watersoda
0 / 0 / 0
Регистрация: 04.04.2015
Сообщений: 97
04.04.2015, 21:06  [ТС] 8
Вот скриншот программы:
0
Миниатюры
Как задать кодировку для заголовка окна?  
nmcf
6517 / 5746 / 2617
Регистрация: 14.04.2014
Сообщений: 24,494
04.04.2015, 21:10 9
У меня нормально работает в Visual Studio. Проверяй кодировку, в которой текст программы сохраняется.
1
watersoda
0 / 0 / 0
Регистрация: 04.04.2015
Сообщений: 97
04.04.2015, 21:12  [ТС] 10
Цитата Сообщение от nmcf Посмотреть сообщение
Проверяй кодировку, в которой текст программы сохраняется.
Проверил: 1251 (ANSI - кириллица).
0
rikimaru2013
04.04.2015, 21:18
  #11

Не по теме:

В настройках IDE мб есть флаг Unicode

0
watersoda
0 / 0 / 0
Регистрация: 04.04.2015
Сообщений: 97
04.04.2015, 21:26  [ТС] 12
Цитата Сообщение от rikimaru2013 Посмотреть сообщение
В настройках IDE мб есть флаг Unicode
Вроде всё облазил - не обнаружил такого флага.
0
MicM
825 / 484 / 324
Регистрация: 29.12.2009
Сообщений: 1,106
Завершенные тесты: 1
04.04.2015, 21:27 13
?
C++
1
system ("title текст");
0
DrOffset
9017 / 4862 / 1198
Регистрация: 30.01.2014
Сообщений: 7,947
04.04.2015, 21:32 14
watersoda, Никаких флагов не надо.
Ты пойми, что компилятор не экстрасенс. L"строка" дает "широкую" строку, по факту это юникод. В Windows - это UTF-16. Компилятор НЕ знает в какой кодировке у тебя файл с исходным кодом. Поэтому, никаким образом магически он не сможет понять, что ты написал строку в cp1251 и хочешь от него преобразования в UTF-16. Раз у тебя devC++, то там используется компилятор MinGW (порт GCC для win). Этот компилятор при формировании "широких" строк использует умолчание о том, что исходник сохранен тоже в юникоде, но в UTF-8. UTF-8->UTF-16 преобразование компилятору известно и он может его выполнить. Итого, сохрани свой код в кодировке UTF-8, чтобы избавиться от проблемы.
0
watersoda
0 / 0 / 0
Регистрация: 04.04.2015
Сообщений: 97
04.04.2015, 21:34  [ТС] 15
Цитата Сообщение от MicM Посмотреть сообщение
1
system ("title текст");
Вроде сработало. Но заголовок почему-то не "Русский текст в консоли", а "Администратор: Русский текст в консоли".
0
watersoda
0 / 0 / 0
Регистрация: 04.04.2015
Сообщений: 97
05.04.2015, 13:05  [ТС] 16
Цитата Сообщение от DrOffset Посмотреть сообщение
Итого, сохрани свой код в кодировке UTF-8, чтобы избавиться от проблемы.
DrOffset, если сохранить исходник в UTF-8, то русский текст в wxDev-C++ после этого отображается в виде кракозябров (см. скриншот).
0
Миниатюры
Как задать кодировку для заголовка окна?  
DrOffset
9017 / 4862 / 1198
Регистрация: 30.01.2014
Сообщений: 7,947
05.04.2015, 13:47 17
Цитата Сообщение от watersoda Посмотреть сообщение
если сохранить исходник в UTF-8, то русский текст в wxDev-C++ после этого отображается в виде кракозябров (см. скриншот).
У тебя есть два варианта развития событий:
1) В 2015 году использовать среду, которая не поддерживает юникод - страшно. Поэтому можно сменить среду, например на CodeLite или CodeBlocks, они нормально умеют работать с юникодом и по-умолчанию используют такой же компилятор, что и wxDevС++.
2) Оставить себе wxDevC++, но сказать компилятору, что исходник у тебя не в UTF-8, а в cp1251. Для этого в опциях нужно добавить ключ -finput-charset=cp1251.
1
watersoda
0 / 0 / 0
Регистрация: 04.04.2015
Сообщений: 97
05.04.2015, 14:45  [ТС] 18
Цитата Сообщение от DrOffset Посмотреть сообщение
Оставить себе wxDevC++, но сказать компилятору, что исходник у тебя не в UTF-8, а в cp1251. Для этого в опциях нужно добавить ключ -finput-charset=cp1251
При добавлении данного ключа SetConsoleCP(1251); и SetConsoleOutputCP(1251); в исходнике уже не нужны?
0
DrOffset
9017 / 4862 / 1198
Регистрация: 30.01.2014
Сообщений: 7,947
05.04.2015, 14:47 19
Цитата Сообщение от watersoda Посмотреть сообщение
При добавлении данного ключа SetConsoleCP(1251); и SetConsoleOutputCP(1251); в исходнике уже не нужны?
Это не связано никак. Этот ключ влияет только на восприятие компилятором кодировки исходника. То, о чем я выше писал.
0
watersoda
0 / 0 / 0
Регистрация: 04.04.2015
Сообщений: 97
05.04.2015, 14:51  [ТС] 20
Цитата Сообщение от watersoda Посмотреть сообщение
При добавлении данного ключа SetConsoleCP(1251); и SetConsoleOutputCP(1251); в исходнике уже не нужны?
Отвечаю на свой же вопрос: после добавления -finput-charset=CP1251 -fexec-charset=CP866 в опции компилятора, SetConsoleCP(1251); и SetConsoleOutputCP(1251); становятся без надобности.
0
Миниатюры
Как задать кодировку для заголовка окна?  
05.04.2015, 14:51
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.04.2015, 14:51

Как в C++ задать размеры консольного окна, используя пространство имен System
Здрасти, вашему вниманию предлагается кусочек кода на C# Console.WindowTop =...

Как задать свои иконки для панели задач и для программы в папке?
Хочу, чтобы эти иконки отличались от той, что стоит в заголовке окна приложения.

Подскажите функцию для получения HWND текущего окна, или по названию окна (для экспорта в VFP6)
пусто


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

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

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