Гость
Форумы / C++ [игнор отключен] [закрыт для гостей] / Проблема с Русскими буквами в консольном приложении под Win2000. / 7 сообщений из 7, страница 1 из 1
23.01.2003, 14:10
    #32095233
maratka
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с Русскими буквами в консольном приложении под Win2000.
Есть консольное приложение (не UNICODE) под Win2000. Код типа:
...
char buff[256];
HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE);
CharToOem("абвгдежз", buff);
WriteConsoleOutputCharacter(hStdout, buff, lstrlen(buff), coord, &dwWrttn);
...
печатает типа:
"а д жз" (без кавычек :)). Под Win98 печатает слово нормально...
Знающие люди, подскажите, в чем дело, что подправить!
Спасибо.
...
Рейтинг: 0 / 0
24.01.2003, 16:41
    #32096093
smike
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с Русскими буквами в консольном приложении под Win2000.
Похоже на глюк функции WriteConsoleOutputCharacter.
Я вижу три варианта:
1. Использовать WriteConsole;
2. Перейти на Unicode (хотя бы в вызове этой функции);
3. Требовать патч от Microsoft. :)
...
Рейтинг: 0 / 0
27.01.2003, 10:59
    #32096596
maratka
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с Русскими буквами в консольном приложении под Win2000.
спасибо! обязательно проверю.
...
Рейтинг: 0 / 0
29.01.2003, 11:57
    #32098021
maratka
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с Русскими буквами в консольном приложении под Win2000.
2 smike
1. WriteConsole работает нормально.
2. (если не ломы отвечать) а как перейти на использование Unicode в отдельном куске кода? я пишу типа:
...
WCHAR wsBuff[256];
LPCTSTR pszSample = "абвгдежз";
nRetCode = MultiByteToWideChar(CP_ACP, MB_ERR_INVALID_CHARS, pszSample, -1, wsBuff, 256);
WriteConsoleOutputCharacter(hOut, (LPCTSTR)wsBuff, lstrlen((LPCTSTR)wsBuff), coord, &dwWrttn);
...
перекодировка происходит вроде нормально, а печатает кракозябры...
...
Рейтинг: 0 / 0
31.01.2003, 12:05
    #32099418
smike
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с Русскими буквами в консольном приложении под Win2000.
Нужно поменять кодовую страницу с CP_ACP на CP_OEMCP:
MultiByteToWideChar(CP_OEMCP,...)
...
Рейтинг: 0 / 0
11.02.2003, 18:37
    #32104758
Tall
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с Русскими буквами в консольном приложении под Win2000.
Код: plaintext
1.
2.
3.
4.
char buff[ 256 ]; 
HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE); 
CharToOem( "абвгдежз" , buff); 
WriteConsoleOutputCharacter(hStdout, buff, lstrlen(buff), coord, &dwWrttn);

А зачем такие сложности???
Почему бы не использовать старые printf или puts?
Код: plaintext
1.
2.
3.
char buff[ 256 ]; 
CharToOem( "абвгдежз" , buff); 
puts(buff);
...
Рейтинг: 0 / 0
12.02.2003, 11:41
    #32105017
maratka
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с Русскими буквами в консольном приложении под Win2000.
изначально был вопрос написать небольш. программу, чтобы показать ее FoxPro-человеку, и неизв., понимает ли он c runtime, зато наверно понимает WinApi. А почему puts проще чем WriteConsole...? Числом аргументов? Зато нашелся буг...
2 smike: (все насчет Unicode) преобразов. в OEM страницу- это обязательно. Может быть потом еще WriteConsoleOutputCharacterW с буквой W на конце, ну и корректную длину строки указать. я попробовал - вроде работает, и без глюков - как ты и сказал. thanks.
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / Проблема с Русскими буквами в консольном приложении под Win2000. / 7 сообщений из 7, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]