Главная

Tuesday, 18 February 2014

Кодовая страница CP-1125 для Windows 7/8


    Хотелось бы  отказаться от этих надоедливых 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.

Не устали? На сегодня все.

2 comments:

  1. Все хорошо работает для 7-ки, спасибо, но теперь пошли 10-ки и буквы ї и є, корректно не отображаются. Как решить эту проблему?

    ReplyDelete
  2. Увы, не на чем проверить. Занят по другому. Но если узнаю решение, то напишу.

    ReplyDelete

А что вы думаете по этому поводу?