Участник
Регистрация: 28.11.2005
Адрес: Москва
|
Почему не получится использовать с неюникодовой программой, такой как Axapta 3-ей версии, несколько кодовых страниц одновременно. Дело в том, что в виндах есть системная (system-wide) настройка для задания текущей кодовой страницы ANSI. Нужна эта настройка для того, чтобы корректно вводить и отображать неюникодовый текст для одного (в каждый момент времени!) из множества возможных языков. Настраивается это тут: control panel/regional & language options/advanced/language to match the language of the non-Unicode programs (доступна только при наличии прав локального администратора). Соответственно, в любой момент времени ввод/вывод всех неюникодовых программ рассматривается в контексте одной установленной кодовой страницы, поэтому в одной программе без завязок на юникод нельзя отображать часть текста в одной кодировке, а часть - в другой, так что все танцы с бубном, установки дополнительных раскладок клавиатуры и проч. тут бесполезны. Однако же задача поставлена, и решать ее как-то надо...
По некотором размышлении возник такой вариант решения:- определить символы рассматриваемого языка (азербайджанского, французского или еще какого), которые не имеют представления в текущей кодовой странице, предположительно CP1251 (например, всякие там ???????????);
- выбрать в текущей кодовой странице символы, которыми можно относительно безболезненно пожертвовать ради недостающих символов рассматриваемого языка (какие-нить їЇ·µґ¦¤ўЎ и т.п.), т.е. которые в тех же названиях на рассматриваемом языке гарантированно встречаться не будут;
- взять какой-то распространенный юникодовый шрифт, например, Arial, Tahoma, Segoe UI или еще какой, который содержит начертания нужных символов рассматриваемого языка;
- «слепить» из символов этого шрифта новый шрифт для текущей кодовой страницы так, чтобы заменить начертания символов, которыми решено пожертвовать, начертаниями недостающих симовлов рассматриваемого языка;
- написать инструкцию для операторов, какими сочетаниями Alt+циферки нужно вводить недостающие символы рассматриваемого языка в полях ввода, либо, как вариант, реализовать программку перекодировки;
- реализовать обратную перекодировку текстов на рассматриваемом языке в их «родную» кодировку в тех местах, где данные экспортируются в другие системы;
- на полях ввода или control'ах печатных форм настроить использование нового слепленного шрифта.
В общем, идея аналогична тому, как реализована печать штрих-кодов: перекодируем исходный текст в «специальную» кодировку и используем соответствующий шрифт.
Последний раз редактировалось gl00mie; 09.07.2008 в 15:04.
Причина: typo
|