Показать сообщение отдельно
Старый 09.07.2008, 11:33   #13  
gl00mie is offline
gl00mie
Участник
MCBMSS
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,684 / 5803 (201) ++++++++++
Регистрация: 28.11.2005
Адрес: Москва
Записей в блоге: 3
Почему не получится использовать с неюникодовой программой, такой как 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
За это сообщение автора поблагодарили: Logger (4).