Discussion:
OEM и ANSI - DOS и Windows
(слишком старое сообщение для ответа)
Damir Tenisheff
2003-08-27 19:03:44 UTC
Permalink
Рад приветствовать тебя All!

Подскажите, пожалуйста, где прочитать про кодировки OEM и ANSI?
Интересует - в чём их различия и какая чему соответствует.

У меня есть старая, но очень полезная утилита под DOS для работы с текстовыми
файлами в DOS-кодировке. Я хотел кое-что в ней поправить. Для этого создал
проект в VC.NET и подключил исходный файл.

Hеприятности проявились в двух вещах:
1. При чтении и записи символы читаются и пишутся в Windows-кодировке. А мне
надо сохранить DOS-кодировку.
2. Естественно, прочитанные символы не проходят проверку на равенство с
симоволом, записанным в тексте программы. Hапример, c == 'н'.

Подскажите, пожалуйста - что это за кодировки и какая чему соответствует.
И какой самый правильный путь работы Win32-приложения с DOS-текстовым файлом.

Я предполагаю, что все просто и достаточно ограничиться OemToAnsi на чтении и
AnsiToOem на записи. Hо не уверен. Хотелось бы знать точно.

И еще: у меня в тексте программы формируется таблица из символов псевдографики.
В DOS я эти символы забил прямо в текст программы (Alt+код). А как быть теперь?
Как в коде в IDE VC.NET объяснить, что мне нужны символы псевдографики
DOS-кодировки?

Удачи в бою!.. ;)
Damir.
Pavel Dvorkin
2003-08-28 08:46:13 UTC
Permalink
Привет!
Post by Damir Tenisheff
Рад приветствовать тебя All!
Подскажите, пожалуйста, где прочитать про кодировки OEM и ANSI?
Интересует - в чём их различия и какая чему соответствует.
OEM == 866, ANSI == 1251, распечатай их таблицы в консольном и GUI
приложении

for(unsigned char c = 32; c <255; c++) // без 255 обойдешься :-)
printf("%c",c); // в GUI придумай сам, как лучше
Post by Damir Tenisheff
У меня есть старая, но очень полезная утилита под DOS для работы с текстовыми
файлами в DOS-кодировке. Я хотел кое-что в ней поправить. Для этого создал
проект в VC.NET и подключил исходный файл.
1. При чтении и записи символы читаются и пишутся в Windows-кодировке. А мне
надо сохранить DOS-кодировку.
Странно. Я сейчас создал файл в кодировке DOS и читал его так

FILE * f = fopen("1.txt","rt");
char szString[100];
fgets(szString, 100,f);

Возвращает DOS-байты, как они есть. Да и кто там перекодировать будет-то
? :-)
Post by Damir Tenisheff
2. Естественно, прочитанные символы не проходят проверку на равенство с
симоволом, записанным в тексте программы. Hапример, c == 'н'.
Прочитай нормально, и все будет Ok.
Post by Damir Tenisheff
Я предполагаю, что все просто и достаточно ограничиться OemToAnsi на чтении и
AnsiToOem на записи. Hо не уверен. Хотелось бы знать точно.
Точно годятся для перекодировки.
Post by Damir Tenisheff
И еще: у меня в тексте программы формируется таблица из символов псевдографики.
В DOS я эти символы забил прямо в текст программы (Alt+код). А как быть теперь?
Как в коде в IDE VC.NET объяснить, что мне нужны символы псевдографики
DOS-кодировки?
Если работаешь с 866 страницей, то никто их тебя не лишал. А в 1251 -
"при наличии отсутствия" (C) :-)
--
С наилучшими пожеланиями
Дворкин Павел
Loading...