Хотелось бы отказаться от этих надоедливых DOS-приложений, но уж больно глубоко они внедрились в головы наших пользователей. А руководство? А
что руководство? Оно предпочитает не замечать текущих проблем технического
прогресса и частенько даже не знает насколько крутая версия софта установлена у
них на компьютер.
Попытки запустить
старые консольные приложения в Windows 7 продолжаются. Вам конечно известно, что в попытках совместимости 7-ка
предлагает и режим XP Mode, и традиционные опции
запуска в ярлыке, и мастер проверки совместимости. Лучше всех себя чувствует XP Mode, но это образно говоря виртуальная
машина с терминальным доступом. Там есть
свои ньюансы.
Поэтому акцент
был переброшен на традиционный запуск с ярлыка. И тут возникла проблема с неожиданной стороны
– кодовая страница консольного приложения!
Почему же неожиданная?
Почему же неожиданная?
Да потому что
странно иметь проблему с кодовой страницей в официальной(!) локализованной(!) Windows 7. Проведу аналогию – вы купили автомобиль, в магазине. Во время езды по проселочной дороге
отваливается одно колесо, регулярно. Вы приходите с вопросом в магазин – как так?
Вам серьезно отвечают – для Вашего авто на Нашей проселочной дороге это нормально. Но мы знаем одного автослесаря,
который вам кое-что подкрутит и все будет ок.))
Вот таким подкручиванием в Windows 7 мы далее и займемся.
Итак - замена
в Windows XP/7 консольных приложений (кодовая страница CP-866) на украинский стандарт RUSCII (кодовая страница CP-1125).
Файл исправлений обеспечивает в Windows XP/7 полную поддержку украинского стандарта
кодировки RUSCII. В частности, это исправляет известную проблему доступа из
файл-менеджера FAR к файлам с украинской буквой 'i' в имени. В растровом шрифте для консольных приложений добавлено
семейство 9x9, 9x11, 9x12, 9x14, 9x16. Латинские символы сняты из Video BIOS,
кириллица - из одного старинного DOS-русификатора (стиль "пишущей
машинки"). Если вы не пользуетесь украинским языком, можете заменить
только файлы *.fon. Прилагаемый файл vga1125.fon содержит растровые консольные
шрифты для Windows NT/2000/XP в кодировке RUSCII (CP-1125), а также дополнительные
размеры шрифтов 9x9, 9x12, 9x14 и т.д. Шрифты ставятся вместо 866 кодовой
таблицы. В комплекте также файл c_1125.nls в котором символы с кодами F2..F9
переразмечены в соответствии с кодировкой RUSCII. Если вы не пользуетесь
украинским языком, вам этот файл не нужен.
Порядок установки прост:
1. Скопируйте в каталог %windir%\Fonts прилагаемый файл
vga1125.fon, установите на него атрибут
"Скрытый" (hidden) по аналогии с остальными vga*.fon файлами.
2. Скопируйте в %windir%\system32 прилагаемые файлы
c_1125.nls, c_437.nls.
3. Импортируйте в реестр файл 866_to_1125.reg.
[HKEY_CURRENT_CONFIG\Software\Fonts]
"OEMFONT.FON"="vga1125.fon"
"LogPixels"=dword:00000060
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\CodePage]
"866"="c_1125.nls"
"OEMCP"="866"
Примечание: если вы
хотите заменить только консольный шрифт или только таблицу перекодировки,
предварительно удалите из этого reg-файла секцию, которую вы менять не
хотите.
4. Сделайте
полную перезагрузку системы.
5. Проверьте
приложение с консольным
окном. Всё уже должно
работать.
Подробнее о поддержке кодировки RUSCII (CP-1125) в разных
программах, а также об украинских кодировках вообще у автора: Andrzej
Novosiolov, E-mail:
andrzej@se.kiev.ua, andrzej@ukrnet.net.
К сожалению это еще не все. Даже поcле
проведенного апдейта Windows 7 может показать вместо кириллицы
кракозябры в консольном окне.
Например, если
при открытом консольном окне с кириллицей открыть дополнительно окно IE или Word
то в консольном окне все станет крякозябликками. Почему так? Когда открывается окно IE
оно автоматически подгружает кодовую станицу c_437.nls. И при закрытии окна IE эта кодовая страница остается и
продолжает далее использоваться системой (Windows 7) для консольного окна. Соответственно наблюдаем крякозяблики.
Выход очевиден - с файла c_1125.nls создаем
копию и называем c_437.nls. И меняем родной c_437.nls в system32 на новенький.)
Сама замена системного файла происходит в три этапа. Заходите администратором в режиме восстановления, назначаете себя
«Владельцем файла», далее даете себе же право делать с этим файлом все приемы,
и только потом меняете его. В результате,
когда окно IE подгружает кодовую страницу c_437.nls - по сути загружается нужный
нам c_1125.nls.
Еще одно. Если у
вас в консольном окне при использовании популярного драйвера клавиатуры Keyrus.com
получаете черный экран не удивляйтесь, просто добавьте параметр
вызова Keyrus.com /COLOR=0,0.
Как известно, Windows
7 с родным драйверам видеоадаптера не поддерживает
полно-экранный режим (fullscreen) для консольного приложения. Так заявили в Microsoft. Это не
совсем правда.
Полно-экранный режим в Windows 7 можно получить двумя путями.
Вариант 1:
берем драйвера
для видеоадаптера и монитора от Windows
ХР. Удаляем монитор и видеоадаптер и тут же
ставим наши «свежие» драйвера. Получаем Windows 7 с полно-экранным режимом для консольных
приложений. Но без наворотов типа Aero.
Вариант 2:
монтируем запуск
нашего консольного приложения в DOSBох c параметром fullscreen=true.
Не верите? Работает! Даже с родными драйверами
видеоадаптера.
А здесь файл исправлений кодовой страницы для Windows 8.
Не устали? На сегодня все.
Все хорошо работает для 7-ки, спасибо, но теперь пошли 10-ки и буквы ї и є, корректно не отображаются. Как решить эту проблему?
ReplyDeleteУвы, не на чем проверить. Занят по другому. Но если узнаю решение, то напишу.
ReplyDelete