Вопрос № 85152: Уважаемые эксперты!
Проясните, пожалуйста, мое недоумение по следующему поводу. При попытке вывода кирилицы на консоль средствами RTL C (например функцией printf()) получаю кракозябры. При попытке вывода кирилицы в UNICODE-формате вообще ничего н...
Вопрос № 85.152
Уважаемые эксперты!
Проясните, пожалуйста, мое недоумение по следующему поводу. При попытке вывода кирилицы на консоль средствами RTL C (например функцией printf()) получаю кракозябры. При попытке вывода кирилицы в UNICODE-формате вообще ничего не получаю. При этом функции Win32 типа WriteConsole() работают корректно. Также корректно выводится английкий текст. Так что, работать с консолью традиционными средствами C в случае кирилицы нельзя? Или я что-то не так делаю? Приложение 32-разрядное. ОС Windows 2000 Server. Пробовал компиляторы
VC++6 и Borland C++ 5.02. Текст программы в приложении.
И еще - где можно достать таблицы различных кодировок (ANSI, UNICODE, CP-1251, KOI8-R, ISO-8859-5 и т.д.)?
Konstantin
Приложение:
Отправлен: 02.05.2007, 22:00
Вопрос задал: M_kostik (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 1)
Отвечает: John Paramol
Здравствуйте, M_kostik!
В MS-DOS, и в его эмуляции под 32-разрядной Windows используется набор символов OEM. Символы с кодами от 32 до 127 в OEM, ASCII и Windows обычно совпадают. Символы русского алфавита лежат за этими пределами и считаются спецсимволами. Они могут различаться даже у различных поставщиков OEM-оборудования.
Для корректного вывода русскоязычного текста на консоль следует воспользоваться функцией CharToOemBuff. Это 32-разрядный аналог функции AnsiToOemBuff, использовавшейся в 16-разрядной Windows. AnsiToOemBuff также остается доступна как макрос, вызывающий функцию CharToOemBuff.
В приложении пример.
Таблицы различных кодировок можно взять, если установить программу FAR, из папки FarAddonsTables
Удачи
Приложение:
--------- 1=2, at values 1 large enough
Ответ отправил: John Paramol (статус: 8-ой класс)
Ответ отправлен: 03.05.2007, 20:41 Оценка за ответ: 4 Комментарий оценки: К сожалению, в FAR'е