Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.07.31;
Скачать: CL | DM;

Вниз

Консольное приложение - косой вывод кириллицы на экран   Найти похожие ветки 

 
Вольный Стрелок ©   (2005-07-13 12:50) [0]

Время от времени возвращаюсь к этой проблеме, но так и не догоняю, что делать.
Пробовал SetConsoleOutputCP - переключает вроде (по крайней мере, об это сообщает GetConsoleOutputCP), но на экране все равно кракозябры.
Пробовал SetConsoleCP - эффект аналогичный. Что ж и в каких комбинациях вызывать, чтоб кириллица нормальная была в консоли?


 
Digitman ©   (2005-07-13 12:55) [1]

var
s: String;
..
s := "КИРИЛЛИЦА";
CharToOEM(pchar(s), pchar(s));
writeln(s);


 
Вольный Стрелок ©   (2005-07-13 12:57) [2]

но консоль не обязана быть в 866 кодировке
я хочу сделать, чтоб вне зависимости от CP консоли на ней всегда выводилось в нужной кодировке


 
Alexander Panov ©   (2005-07-13 12:59) [3]

Вольный Стрелок ©   (13.07.05 12:57) [2]
но консоль не обязана быть в 866 кодировке


а CharToOEM не переводит в 866 кодировку.


 
Вольный Стрелок ©   (2005-07-13 13:04) [4]

а что тогда OEM-defined character set?
и нафига тогда SetConsoleOutputCP ?


 
Anatoly Podgoretsky ©   (2005-07-13 13:08) [5]

Ты нас спрашиваешь?


 
DiamondShark ©   (2005-07-13 13:13) [6]

Опытным путём установлено, что SetConsoleOutputCP даёт заявленый эффект лишь при условии, что:
- консольное приложение не в полноэкранном режиме;
- для окна консоли установлен шрифт Lucida Console.


 
Anatoly Podgoretsky ©   (2005-07-13 13:20) [7]

DiamondShark ©   (13.07.05 13:13) [6]
В полноэкранном требуется перепрограммирование знакогенератора, ОС этим не занимается.


 
DiamondShark ©   (2005-07-13 13:31) [8]

и нафига тогда SetConsoleOutputCP ?


 
Anatoly Podgoretsky ©   (2005-07-13 13:34) [9]

DiamondShark ©   (13.07.05 13:31) [8]
Для преобразований, там где это возможно.


 
Вольный Стрелок ©   (2005-07-13 13:52) [10]

[5]
Спрашиваю. Ведь для того и форум, так?

Просто в одном из примеров видел именно применение SetConsoleOutputCP для этой цели, но у меня что-то не так себя ведет, как там описано...

[9]
что значит, "где возможно"? критерии возможности какие?
И почему знакогенератором ОС не занимается? Драйвер видюхи должен? Дык, тогда все равно ос ему команды должна давать.


 
Вольный Стрелок ©   (2005-07-13 13:58) [11]

Кстати, про шрифт консоли. Можно ли к ней прикрутить другой моноширинный шрифт, а не только Lucida? И как?


 
Вольный Стрелок ©   (2005-07-13 15:30) [12]

2 DiamondShark
только что ставил эксперименты и понял, что у меня не совсем так, как в [6]
1. при полноэкранном режиме тоже работает корректно при Lucida Concole
2. даже без Lucida (просто точечный шрифт) SetConsoleOutputCP ведет себя правильно в полноэкранном режиме
3. при переходе из полноэкранного в оконный при точечном шрифте уже правильно выведенное на консоль сообщение остается в нужной кодировке, а вот новое - увы, плющит

2 Anatoly Podgoretsky
Из п.3 можно сделать вывод, что проблема в самой SetConsoleOutputCP, а не в знакогенераторе.


 
Вольный Стрелок ©   (2005-07-13 17:21) [13]

up


 
Вольный Стрелок ©   (2005-07-13 18:37) [14]

вижу, народ идей больше не имеет :(
может, хоть на [11] что-то скажете?


 
DiamondShark ©   (2005-07-13 18:42) [15]


> Вольный Стрелок ©   (13.07.05 15:30) [12]

Значит в разных версиях винды по разному. У меня 2000.


 
Вольный Стрелок ©   (2005-07-14 12:48) [16]

снова up



Страницы: 1 вся ветка

Текущий архив: 2005.07.31;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.03 c
3-1119432152
new___
2005-06-22 13:22
2005.07.31
не найден Ehlib70.bpl


3-1119623186
Вольный Стрелок
2005-06-24 18:26
2005.07.31
вставка апострофа в строковую константу в Oracle-скрипте


1-1120999072
B-S-G
2005-07-10 16:37
2005.07.31
Изменить исполняемый файл


1-1121297550
JohnSmith
2005-07-14 03:32
2005.07.31
Как создать динамический массив потоков ?


14-1120923281
dec
2005-07-09 19:34
2005.07.31
На чем лучше писать сервер ?