T&T0x03. Кириллица в консоли Windows
Задача. Получить вывод русских/украинских сообщений разрабатываемой программы в консольном приложении.
Решение. Включить правильную кодовую страницу.
Начиная изучать С/С++ многие программисты сталкиваются с проблемой «крякозябров» при попытке вывода русского текста в консоле Windows.
Пример.
#include < stdio.h >
int main(int argc, char **argv)
{
printf("Привет, мир!\n");
getch();
return 0;
}
Результат :)
Для решения данной проблемы следует уяснить два важных момента.
Первое, консоль русской/украинской Windows по умолчанию имеет кодировку 866.
Второе, текст, набранный в редакторе IDE может быть в различных кодировках, для интегрированных сред на основе mingw, таких как Codelite (codelite.org) или Code::Blocks (codeblocks.org) скорее всего utf-8 :), в чем и кроется ряд дополнительных проблем.
Известные способы (http://www.progz.ru/t1979/, http://www.gamedev.ru/code/faq/?id=3619, http://www.rsdn.ru/forum/cpp/319487.flat.aspx и др.) подразумевают, что в редакторе текст набран в кодировке Windows 1251.
Проверим рекомендации.
Рекомендация 1.
#include < stdio.h >
#include < locale.h >
int main(int argc, char **argv)
{
setlocale (LC_ALL, ".1251"); !!!!!!!!!
printf("Привет, мир!\n");
getch();
return 0;
}
Результат :)
Рекомендация 2.
#include < stdio.h >
#include < windows.h >
int main(int argc, char **argv)
{
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
printf("Привет, мир!\n");
getch();
return 0;
}
Результат :)
Решение, system("chcp 65001 > nul"), может и не очень изящное, но позволяет легко решить проблему «крякозябров». Данная команда включает «правильную» кодовую станицу (см. http://ru.wikipedia.org/wiki/Кодовая_страница )
#include < stdio.h >
int main(int argc, char **argv)
{
system("chcp 65001 > nul");
printf("Привет, мир!\n");
getch();
return 0;
}
Результат :)
Для того, что бы это заработало, следует установить «правильный» шрифт в консоли, поддерживающий UNICODE, например, Lucida Console.
После установки шрифта, получаем желаемый результат.
Удачного программирования с русским выводом в консоли.
ЗЫ. Никто не запрещает установить по умолчанию в редакторе кодовую страницу 1251 и использовать упоминавшиеся выше рекомендации.
ЗЗЫ. Все примеры проверялись в ОС Windows XP.
ЗЗЗЫ. Использование Linux избавляет от головной боли с выводом в консоль :)
Кириллица в консоли Windows is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License.
Рубрика: Tips&Tricks
Авторы: Савченко В.Н.
Опубликовано: 24.09.11 16:04