![]() |
|
Модераторы: feodorv, GremlinProg, xvr, Fixin |
![]()
|
|
| -Kp0T- |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 61 Регистрация: 23.2.2007 Репутация: 2 Всего: 2 |
Устал рыться, решил спросить. Дело такое:
Кому код лень читать описываю проблему. В консольное окно вывести кириллицу с пом. WriteConsole(...) или printf(...) строку после обработки CharToOem(...) удается корректно. Фолтнулся вывод через WriteConsoleOutputCharacter(...) Прочесть экран с пом. ReadConsoleOutputCharacter() тоже не удается. Подскажите где тут собака зарыта, я ее не нашел :( - или это Баг? (кстати, системные настройки языка, настройки IDE тоже изменял, но пока ничего результативного) Это сообщение отредактировал(а) -Kp0T- - 17.5.2007, 01:30 |
|||
|
||||
| FelikZ |
|
|||
![]() Старый Маразматик ![]() ![]() Профиль Группа: Участник Сообщений: 380 Регистрация: 1.12.2006 Где: Vault 13 Репутация: нет Всего: 5 |
что такое "t" ? Может юникод твое спасенье? Это сообщение отредактировал(а) FelikZ - 16.5.2007, 22:18 -------------------- ![]() |
|||
|
||||
| -Kp0T- |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 61 Регистрация: 23.2.2007 Репутация: 2 Всего: 2 |
2FelikZ:
что такое "t" ? - думаю догадался, там не t. Поправил. Оформил в спешке в стиле копи-паст с проги... Может юникод твое спасенье? - может и быть... Вот только на сколько знании хватило - не спасло... |
|||
|
||||
| Partizan |
|
|||
![]() Let's do some .NET ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 2828 Регистрация: 19.12.2005 Где: Санкт-Петербург Репутация: нет Всего: 67 |
-Kp0T-, пользуй wchar_t...помогает...
тут вся загвоздка в размерах юникодных и не юникодных символов (2 байта и 1 байт соответственно)... поэтому использование wchar_t однозначно должно помочь.... -------------------- СУВ, Partizan. |
|||
|
||||
| korbian |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 336 Регистрация: 20.2.2007 Где: Penza Репутация: 9 Всего: 14 |
-Kp0T-, почему не используешь std::cout\std::wcout?
-------------------- korbian © |
|||
|
||||
| -Kp0T- |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 61 Регистрация: 23.2.2007 Репутация: 2 Всего: 2 |
WriteConsoleCharacter(..) - вариант с юникодом работал, т.е. WriteConsoleCharacterW(...). А с ANSI то что? нужен WriteConsoleCharacterA(...). Может что-нибудь несконвертировал?
2korbian: Дело не в std::cout. Вообще то надо было не только вывести но и считать коррекстно с консоли. Это сообщение отредактировал(а) -Kp0T- - 17.5.2007, 09:05 |
|||
|
||||
| Ln78 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 274 Регистрация: 25.11.2006 Репутация: нет Всего: 15 |
-Kp0T-, вроде SetConsoleOutputCP(1251) помогает. Для вывода попробовал - получилось
|
|||
|
||||
| -Kp0T- |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 61 Регистрация: 23.2.2007 Репутация: 2 Всего: 2 |
Респект, Ln78!
Здорово! Выручил! Я оказывается помешанный В принципе все верно, GetOEMCP() возвращает 866 (OEM), GetACP() - 1251 (ANSI). После CharToOem() - в приемнике 866-ая кодировка; WriteConsole() - выводит нормально; WriteConsoleOutput() - аномально; (при этом GetConsoleOutputCP() дефолтно 866 ). Выполнив SetConsoleOutputCP(1251) (ANSI) (при этом в приемнике 866-ая CP) WriteConsole() и WriteConsoleOutput() работают нормально. - Лишнее доказательство тому что форточки писали люди Это сообщение отредактировал(а) -Kp0T- - 17.5.2007, 20:46 |
|||
|
||||
![]()
|
| Правила форума "C/C++: Системное программирование и WinAPI" | |
|
|
На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы . Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |