Использую консольный вывод командой printf на платформе NET 2003 . В тексте программы сообщения хранятся в ANSI,а на консоль выводятся в OEM. В результате все кириличные символы отображаются неверно. Каким образом лучше всего побороть эту неприятность ?
Re: Русификация консольного вывода
От:
Аноним
Дата:
18.09.08 16:45
Оценка:
Здравствуйте, doktor35, Вы писали:
D>Использую консольный вывод командой printf на платформе NET 2003 . В тексте программы сообщения хранятся в ANSI,а на консоль выводятся в OEM. В результате все кириличные символы отображаются неверно. Каким образом лучше всего побороть эту неприятность ?
кажется, это был один из самых глубокомысленных и заковыристых вариантов вопроса "а почему у меня в консоли кракозяблики"
Здравствуйте, doktor35, Вы писали:
D>Использую консольный вывод командой printf на платформе NET 2003 . В тексте программы сообщения хранятся в ANSI,а на консоль выводятся в OEM. В результате все кириличные символы отображаются неверно. Каким образом лучше всего побороть эту неприятность ?
Здравствуйте, doktor35, Вы писали:
D>Использую консольный вывод командой printf на платформе NET 2003 . В тексте программы сообщения хранятся в ANSI,а на консоль выводятся в OEM. В результате все кириличные символы отображаются неверно. Каким образом лучше всего побороть эту неприятность ?
Здравствуйте, vasvladal, Вы писали:
V>Здравствуйте, doktor35, Вы писали:
D>>Использую консольный вывод командой printf на платформе NET 2003 . В тексте программы сообщения хранятся в ANSI,а на консоль выводятся в OEM. В результате все кириличные символы отображаются неверно. Каким образом лучше всего побороть эту неприятность ?
V>Используй V>_wsetlocale(LC_ALL, L".1251");
Уточните,пожалуста, как именно работать с этой командой,
приведеный ниже код не помогает,хотя после выполнения команды ret=_wsetlocale(LC_ALL, L".1251"); переменная ret получает правильное значение.
Здравствуйте, doktor35, Вы писали:
D>Использую консольный вывод командой printf на платформе NET 2003 . В тексте программы сообщения хранятся в ANSI,а на консоль выводятся в OEM. В результате все кириличные символы отображаются неверно. Каким образом лучше всего побороть эту неприятность ?
setlocale( LC_ALL, "Russian");
Кстати, интересно, ".1251" — это любовь к цифрам, или имеются отличия от более читабельного "Russian"?
Здравствуйте, 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;
}
вывод на консоль:
Добрый день
Доброй ночи
Cправка MSDN по _wsetlocale()- очень хороший пример использования.
В том числе и _wsetlocale(LC_ALL, "Russian")), или, как у меня, _wsetlocale(LC_ALL, L".1251"), что тождественно;