3 / 3 / 0
Регистрация: 04.04.2015
Сообщений: 125
1

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

04.04.2015, 16:37. Показов 3525. Ответов 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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.04.2015, 16:37
Ответы с готовыми решениями:

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

Как задать кодировку для файла?
&lt;?php header('Content-Type: text/html; charset= utf-8'); ini_set('display_errors','On');...

Как в iframe задать кодировку для текстового файла, на который он ссылается
Есть тег iframe, который ссылается на текстовый файл. В текстовом файле есть русский текст. Он...

Как задать имя окна браузера Амиго для поиска дескриптора окна FindWindow
var h: HWND; begin h := FindWindow(nil, 'Amigo'); if h &gt; 0 then По Amigo результат...

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

Не по теме:

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

0
3 / 3 / 0
Регистрация: 04.04.2015
Сообщений: 125
04.04.2015, 21:26  [ТС] 12
Цитата Сообщение от rikimaru2013 Посмотреть сообщение
В настройках IDE мб есть флаг Unicode
Вроде всё облазил - не обнаружил такого флага.
0
839 / 497 / 325
Регистрация: 29.12.2009
Сообщений: 1,106
04.04.2015, 21:27 13
?
C++
1
system ("title текст");
0
15269 / 8236 / 1993
Регистрация: 30.01.2014
Сообщений: 14,019
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
3 / 3 / 0
Регистрация: 04.04.2015
Сообщений: 125
04.04.2015, 21:34  [ТС] 15
Цитата Сообщение от MicM Посмотреть сообщение
1
system ("title текст");
Вроде сработало. Но заголовок почему-то не "Русский текст в консоли", а "Администратор: Русский текст в консоли".
0
3 / 3 / 0
Регистрация: 04.04.2015
Сообщений: 125
05.04.2015, 13:05  [ТС] 16
Цитата Сообщение от DrOffset Посмотреть сообщение
Итого, сохрани свой код в кодировке UTF-8, чтобы избавиться от проблемы.
DrOffset, если сохранить исходник в UTF-8, то русский текст в wxDev-C++ после этого отображается в виде кракозябров (см. скриншот).
Миниатюры
Как задать кодировку для заголовка окна?  
0
15269 / 8236 / 1993
Регистрация: 30.01.2014
Сообщений: 14,019
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
3 / 3 / 0
Регистрация: 04.04.2015
Сообщений: 125
05.04.2015, 14:45  [ТС] 18
Цитата Сообщение от DrOffset Посмотреть сообщение
Оставить себе wxDevC++, но сказать компилятору, что исходник у тебя не в UTF-8, а в cp1251. Для этого в опциях нужно добавить ключ -finput-charset=cp1251
При добавлении данного ключа SetConsoleCP(1251); и SetConsoleOutputCP(1251); в исходнике уже не нужны?
0
15269 / 8236 / 1993
Регистрация: 30.01.2014
Сообщений: 14,019
05.04.2015, 14:47 19
Цитата Сообщение от watersoda Посмотреть сообщение
При добавлении данного ключа SetConsoleCP(1251); и SetConsoleOutputCP(1251); в исходнике уже не нужны?
Это не связано никак. Этот ключ влияет только на восприятие компилятором кодировки исходника. То, о чем я выше писал.
0
3 / 3 / 0
Регистрация: 04.04.2015
Сообщений: 125
05.04.2015, 14:51  [ТС] 20
Цитата Сообщение от watersoda Посмотреть сообщение
При добавлении данного ключа SetConsoleCP(1251); и SetConsoleOutputCP(1251); в исходнике уже не нужны?
Отвечаю на свой же вопрос: после добавления -finput-charset=CP1251 -fexec-charset=CP866 в опции компилятора, SetConsoleCP(1251); и SetConsoleOutputCP(1251); становятся без надобности.
Миниатюры
Как задать кодировку для заголовка окна?  
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.04.2015, 14:51

Как задать русскую кодировку для базы данных в visual studio 2012?
Делая курсовую столкнулся с проблемой, данные вводимые в базу данных на Кирилице преобразуются в...

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

Как задать кодировку
Здравствуйте! Пишу так#!/usr/bin/perl -w use strict; use CGI qw(:standard); print header;...

Как задать кодировку?
Я хочу unicode везде, кроме гостевой книги. Что и в каком точно месте надо прилепить на страницы и...


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

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

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