Русификация консольного вывода
От: doktor35  
Дата: 18.09.08 16:37
Оценка:
Использую консольный вывод командой printf на платформе NET 2003 . В тексте программы сообщения хранятся в ANSI,а на консоль выводятся в OEM. В результате все кириличные символы отображаются неверно. Каким образом лучше всего побороть эту неприятность ?
Re: Русификация консольного вывода
От: Аноним  
Дата: 18.09.08 16:45
Оценка:
Здравствуйте, doktor35, Вы писали:

D>Использую консольный вывод командой printf на платформе NET 2003 . В тексте программы сообщения хранятся в ANSI,а на консоль выводятся в OEM. В результате все кириличные символы отображаются неверно. Каким образом лучше всего побороть эту неприятность ?


кажется, это был один из самых глубокомысленных и заковыристых вариантов вопроса "а почему у меня в консоли кракозяблики"
Re: Русификация консольного вывода
От: Danchik Украина  
Дата: 18.09.08 17:36
Оценка:
Здравствуйте, doktor35, Вы писали:

D>Использую консольный вывод командой printf на платформе NET 2003 . В тексте программы сообщения хранятся в ANSI,а на консоль выводятся в OEM. В результате все кириличные символы отображаются неверно. Каким образом лучше всего побороть эту неприятность ?


Вот хочется сказать: баян Неужели трудно сначала поискать.
Почему вместо русских букв в консольном приложении выводится мусор?
Автор(ы): Алексей Кирюшкин
Re: Русификация консольного вывода
От: vasvladal  
Дата: 18.09.08 17:58
Оценка:
Здравствуйте, doktor35, Вы писали:

D>Использую консольный вывод командой printf на платформе NET 2003 . В тексте программы сообщения хранятся в ANSI,а на консоль выводятся в OEM. В результате все кириличные символы отображаются неверно. Каким образом лучше всего побороть эту неприятность ?



Используй
_wsetlocale(LC_ALL, L".1251");
Re: Русификация консольного вывода
От: MasterZiv СССР  
Дата: 18.09.08 18:40
Оценка:
doktor35 wrote:
Каким образом
> лучше всего побороть эту неприятность ?
chcp 1251
Posted via RSDN NNTP Server 2.1 beta
Re[2]: Русификация консольного вывода
От: doktor35  
Дата: 18.09.08 18:41
Оценка:
Здравствуйте, vasvladal, Вы писали:

V>Здравствуйте, doktor35, Вы писали:


D>>Использую консольный вывод командой printf на платформе NET 2003 . В тексте программы сообщения хранятся в ANSI,а на консоль выводятся в OEM. В результате все кириличные символы отображаются неверно. Каким образом лучше всего побороть эту неприятность ?



V>Используй

V>_wsetlocale(LC_ALL, L".1251");
Уточните,пожалуста, как именно работать с этой командой,
приведеный ниже код не помогает,хотя после выполнения команды ret=_wsetlocale(LC_ALL, L".1251"); переменная ret получает правильное значение.

ret=_wsetlocale(LC_ALL, L".1251");
printf("Добрый день\n");
_tprintf("Доброй ночи\n");
Re: Русификация консольного вывода
От: DarkTranquillity  
Дата: 19.09.08 06:04
Оценка:
Здравствуйте, doktor35, Вы писали:

D>Использую консольный вывод командой printf на платформе NET 2003 . В тексте программы сообщения хранятся в ANSI,а на консоль выводятся в OEM. В результате все кириличные символы отображаются неверно. Каким образом лучше всего побороть эту неприятность ?


setlocale( LC_ALL, "Russian");


Кстати, интересно, ".1251" — это любовь к цифрам, или имеются отличия от более читабельного "Russian"?
Re[3]: Русификация консольного вывода
От: vasvladal  
Дата: 19.09.08 06:51
Оценка:
Здравствуйте, doktor35, Вы писали:

D>Здравствуйте, vasvladal, Вы писали:


V>>Здравствуйте, doktor35, Вы писали:


D>>>Использую консольный вывод командой printf на платформе NET 2003 . В тексте программы сообщения хранятся в ANSI,а на консоль выводятся в OEM. В результате все кириличные символы отображаются неверно. Каким образом лучше всего побороть эту неприятность ?



V>>Используй

V>>_wsetlocale(LC_ALL, L".1251");
D>Уточните,пожалуста, как именно работать с этой командой,
D>приведеный ниже код не помогает,хотя после выполнения команды ret=_wsetlocale(LC_ALL, L".1251"); переменная ret получает правильное значение.

D>ret=_wsetlocale(LC_ALL, L".1251");

D>printf("Добрый день\n");
D>_tprintf("Доброй ночи\n");


#include "stdafx.h"
//#include <locale>

using namespace std;

int _tmain(int argc, _TCHAR* argv[])
    {
    //_wsetlocale(LC_ALL, L".1251");
    printf("Добрый день\n");
    _tprintf(L"Доброй ночи\n");
    return 0;
    }

вывод на консоль:
─юсЁ√щ фхэ№


#include "stdafx.h"
#include <locale>

using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
_wsetlocale(LC_ALL, L".1251");
printf("Добрый день\n");
_tprintf(L"Доброй ночи\n");
return 0;
}

вывод на консоль:
Добрый день
Доброй ночи
Cправка MSDN по _wsetlocale()- очень хороший пример использования.
В том числе и _wsetlocale(LC_ALL, "Russian")), или, как у меня, _wsetlocale(LC_ALL, L".1251"), что тождественно;
Re[4]: Русификация консольного вывода
От: vasvladal  
Дата: 19.09.08 06:59
Оценка:
Поправка: _wsetlocale(LC_ALL, L"Russian");
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.