Форум программистов, компьютерный форум CyberForum.ru

Почему MS-DOS не любит кириллицу ? (Или почему она не любит меня ?) - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.90
MegaEvgeniy
 Аватар для MegaEvgeniy
7 / 7 / 0
Регистрация: 06.11.2011
Сообщений: 113
14.12.2011, 04:47     Почему MS-DOS не любит кириллицу ? (Или почему она не любит меня ?) #1
Здравствуйте

Почему MS-DOS не любит кириллицу ?

У меня есть несколько консольных проектор различной сложности.

Почти везде использовал setlocale, "" .... но есть одна очень очень не приятная вещь...

При работе в простых проектах (без определения собственных классов) ввод и вывод инф-и прекрасно работает, Но стоит добавить свой класс и реализовать через него ввод и вывод инф-ы в консоль и в txt файл ... как начинается аброкадабра... Что я только не делал...

Организовывал переключение кодировок на входе и выходе консоли и файлового потока...

Пробовал разные методы установки "русской восприимчивости" в MS-DOS...

Максимум чего я достиг без переключения шрифта в консоли, так это корректного ввода и вывода русского шрифта в Самой консоли... Но уже вывод в файл осуществляется крякозябрами (((

Единственный метод решения данного полтергейста я нашёл в переключении шрифтов по умолчанию на Lucida Console и использования определения кодировки на входе и на выходе:

C++
1
2
SetConsoleCP (1251);
SetConsoleOutputCP (1251);
Помогите люди добрые, ну не жесть ли ?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alkagolik
 Аватар для alkagolik
1510 / 616 / 79
Регистрация: 15.07.2011
Сообщений: 3,552
14.12.2011, 07:39     Почему MS-DOS не любит кириллицу ? (Или почему она не любит меня ?) #2
Русские шрифты в консоли
kravam
быдлокодер
 Аватар для kravam
1512 / 872 / 44
Регистрация: 04.06.2008
Сообщений: 5,271
14.12.2011, 08:06     Почему MS-DOS не любит кириллицу ? (Или почему она не любит меня ?) #3
Цитата Сообщение от MegaEvgeniy Посмотреть сообщение
Почему MS-DOS не любит кириллицу ?

Не по теме:

не ну а чё ты хотел, соответствие английского алфавита определённым числам постоянно в любой кодировке, чего нельзя сказать про русский алфавит. Кто-то придумал эти кодировки, срубил бабла в свой время и угнал в штаты, а мы теперь мучайся. Это хорошо ещё что кодировок с киррилицей не так много, как могло быть, а то совсем замучались бы.

Байт
 Аватар для Байт
13988 / 8819 / 1230
Регистрация: 24.12.2010
Сообщений: 15,975
14.12.2011, 10:49     Почему MS-DOS не любит кириллицу ? (Или почему она не любит меня ?) #4
Цитата Сообщение от kravam Посмотреть сообщение
Это хорошо ещё что кодировок с киррилицей не так много, как могло быть, а то совсем замучались бы.
Есть еще KOI-8, UNICODE, UTF8....
Можно поиграть в "Кто больше".

Цитата Сообщение от MegaEvgeniy Посмотреть сообщение
Почему MS-DOS не любит кириллицу ?
Да любит он кириллицу! Только она у него другая (OEM). А у Виндовоза - ANSI
Посмотри функции OemToAnsi, AnsiToOem

Добавлено через 14 минут
Цитата Сообщение от kravam Посмотреть сообщение
Кто-то придумал эти кодировки, срубил бабла в свой время и угнал в штаты,
Краткий исторический экскурс. Когда в 80-х МС-ДОС начал свое победное шествие по просторам бывшего Союза, была придумана некоторая кодировка кириллицы. Но жила она не долго, т.к забивала симпатичнейшие символы псевдографики. Почесали в затылке - придумали другую, оставлявшую псевдографику в покое. Назвали ее альтернативной. А ту, первую - основной. Конечно, все схватились за альтернативную (она и есть OEM). ANSI базируется на основной Психологически это понятно, основная все-таки. Но нам это головной боли прибавило - ой-йо-ей!
Кто придумал и куда свалил - не знаю, к сожалению

Добавлено через 1 минуту

Не по теме:

Диверсия, должно быть

MegaEvgeniy
 Аватар для MegaEvgeniy
7 / 7 / 0
Регистрация: 06.11.2011
Сообщений: 113
15.12.2011, 00:41  [ТС]     Почему MS-DOS не любит кириллицу ? (Или почему она не любит меня ?) #5
Жестоко судьба с нами обошлась, придёться приспосабливаться

Добавлено через 7 часов 41 минуту
Попробовал применить CharToOemA и нифига не вышло...

Делал несколькими способами и всё равно одно, даже CharToAnsi не бельме...

НО Решил проблему с помощью установки SetConsoleCP (1251) на ввод строки в потоке, SetConsoleCP (866) на ввод чисел в своём классе

При этом в исходном коде стояла setlocale( LC_ALL,"rus" )

И смена шрифта не нужна, УРААААА!!!!!!!!
Yandex
Объявления
15.12.2011, 00:41     Почему MS-DOS не любит кириллицу ? (Или почему она не любит меня ?)
Ответ Создать тему
Опции темы

Текущее время: 05:54. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru