вторник, 9 октября 2007 г.

Консольная кодировка

Был тут давеча весьма шокирован. Совершенно неожиданно для меня оказалось, что под виндой текст в консоль выводится в досовской кодировке. Больше всего меня удивляет, как я мог не замечать этого раньше. Ведь уже далеко не первый год программированием занимаюсь. А обнаружил это только когда начал школьникам преподавать курс программирования на C. Похоже, что раньше я просто ничего не пытался выводить в консоль кириллицей. Причём с MSVC всё легко решается с помощью
setlocale(LC_CTYPE, ".1251");
то при использовании LCC-Win32 или MINGW это почему-то не помагает. Так пока и не удалось забороть проблему. Буду дальше бороться.
Кстати, я сразу же решил попробовать вывести строчку кириллицей с помощью C#. Там никаких проблем не возникло. Слава Юникоду! =)

3 комментария:

Анонимный комментирует...

В MinGW подключите к консольной программе winuser.h и используйте CharToOem(src, dest) для перевода в DOS - кодировку.

Алексей комментирует...

Это решение, но решение плохое. Не вызывать же эту функцию каждый раз, когда необходимо использовать printf или scanf!

Анонимный комментирует...

chcp 1251 в консольке сделайте перед выводом туда кириллицы и прокляните микрософт :)