 |
cp866u patch for ukrainian 'i' in console applications (NT4/w2k/XP)
by savaX@inserv.kiev.ua (remove X)
Известная проблема - Windows плохо дружит с украинскими буквами 'I', 'i'.
Файлы, содержащие в именах эти буквы отображаются неправильно, со знаками вопроса
('?'). И что наиболее неприятно - не копируются из консольных фйловых менеджеров,
таких как Far.
Вот архив с патчем:
cp866u.rar
Коментарии по установке см. ниже
А вот коментарии автора (взято из readme.txt):
Хотел бы обратить Ваше внимание на недостаток Windows. Когда создавали
локализированные таблицы для OEM украинские символы забыли, и затем
вставили в 866 таблицу. Отсутствие стандартизации в этой области привело
к тому, что появилось несколько таблиц, отличавшихся положением нескольких
символов специфичных для украинского алфавита. После создания 1251 таблицы
положение улучшилось, поскольку она имела украинские символы. Тоже можно
сказать и о таблице Unicode. Однако возникла проблема с символами имеющими
следующие коды:
| cp1251 | Unicode |
| 0xB2 | 0x0406 |
| 0xB3 | 0x0456 |
Это украинские буквы (I) и (i). В таблицах 866 как для Windows NT 4.0,
W2k, так и для Windows 9x отсутствуют коды для этих символов.
Поэтому при выполнении функций AnsiToOem и OemToAnsi, а также
некоторых других использующих таблицу 866 символ заменяется на ?
или _ в зависимости от системы. В результате все программы выполняющие
по тем или иным причинам перекодировку работают неправильно. При работе
с текстом особых проблем кроме неудобств не возникает. Однако MSOffice
любит создавать названия файлов из первой строки файла, кроме того
заставить пользователей не использовать неправильных символов
в названиях практически невозможно. Вот лишь небольшой перечень проблем
возникающих в результате использования файлов с названиями содержащими
неизвестный системе символ:
1. При переписывании файла с NTFS раздела на FAT или наоборот;
2. При использовании программ архивации работающих в DOS окне или
пакетном режиме (любая програма работающая в DOS производит
перекодировку для вывода);
3. При использовании NC like commander (например популярный сейчас FAR).
4. При использовании баз данных с информацией в OEM кодировке
(например 1С бухгалтерия использует файлы в формате DBASE).
Конечно можно не пользоваться всеми этими программами, но я лично
люблю Far и архиватор Jar, да и другие пакетные программы. Мне удалось
решить эту проблему в Windows NT путем изменения 866 таблицы:
| cp866 | Unicode old | Unicode new |
| 0xF6 | 0x040E | 0x0406 |
| 0xF7 | 0x045E | 0x0456 |
Теперь совет:
Воспользоваться патчем который прилагается.
После этого будет работать все.
Ну и конечно после каждой установки Service Pack ставить патч.
P.S. Прилагаемая программа extmove.exe позволяет копировать файлы
защищенные от записи.
Адрес для контакта: savaX@inserv.kiev.ua (remove X)
Комментарии по установке
from alterX@alter.org.ua (remove X):
- Распаковать cp866u.rar и запустить setup.bat, после чего перезагрузить машину.
- Запускать нужно с того раздела, на котором находится каталог WINNT (для NT4/w2k) или WINDOWS (для XP).
Это требование связано с тем, что программа extmove.exe, использующаяся при установке,
в действительности добавляет пути к указанным файлам в специальный список в Registry, а при
перезагрузке Windows самостоятельно перепишет их в нужное место. Во время загрузки гарантируется доступность
только того раздела, на котором находится сама Windows.
- Сразу после исполнения setup.bat может исчезнуть индикатор раскладок.
В этом случае после перезагрузки необходимо зайти в Control Panel->Keyboard->Input Locales
и заново добавить русскую и/или украинскую раскладку.
Пользователям Far'а рекомендую также патчик для таблиц перекодировки koi8-u и cp1251.
Детальнее с ним можно ознакомиться здесь.
Для любителей есть еще
смешаная русско-украинская раскладка, содержащая все буквы обоих алфавитов.
А для тех, у кого стоит английская Винда, а кирилица упорно показывается вопросиками ('?'),
рекомендуется почитать HOWTO по включению кирилицы в Windows NT/2000/XP.
См. также
|
 |
|