![]() |
#3 |
Участник
|
Цитата:
Сообщение от jopagames3
Цитата:
![]() Вообще задача интересная. А какой именно язык системный? Как "русские буквы" попадают в базу? Пользователь вводит их с клавиатуры или загружает как текст из файла? А как отличть именно русское название от локального (финского, например) если буквы одни и те же? Как вариант можно попробовать поиграть с лицензией (она русская?). В ней хранится табличка преобразования кода клавиши в букву. В русской лицензии 1252 преобразуется в 866. Если база нативная - там вообще просто. Прямо в базу можно кусок этот вписать. С SQL не знаю... надо смотреть. Можно с кодовой страницей в Винде поиграть. Главное, остальные приложения чтобы не затронуть ![]() А может, скуль может как-то конвертировать. ЗЫ: Нет, вот с макросом Word - тупиковый вариант. Проще уж на Си написать своё консольное приложение, а файл передавать в качестве аргумента. Но прямо из Nav конвертировать, думаю, еще проще. ЗЗЫ: А вообще, самому даже интересно, если несколько разных языков в системе, то что именно и как хранится в базе? С 2013 всё понятно - там уже UTF. База SQL, русского языка в лицензии нет. "Русские буквы" вводятся с клавиатуры, переключив на русскую раскладку. В базе алфавит выглядит как ĄĮĀĆÄÅØĘĒČÉŹĖĢĶĪĻŠŃŅÓŌÕÖ×ŲŁŚŪÜŻŽ, все эти символы - в неиспользуемой области и не перекрывают латышские. В моём фонте они заменены на русские, на экране пользователь видит АБВГД... В одном поле можно писать и по русски и по латышски (рсская и латышская А выглядят одинаково, но в реальности это разные символы) С макросом вышло очень даже просто: сам макрос вида With Selection.Find .Text = "Ą" .Replacement.Text = ChrW(1072) .Forward = True .Wrap = wdFindContinue End With Selection.Find.Execute Replace:=wdReplaceAll With Selection.Find .Text = "Į" .Replacement.Text = ChrW(1073) .Forward = True .Wrap = wdFindContinue End With Selection.Find.Execute Replace:=wdReplaceAll .......... так на все 33 буквы Из Навижн открываем файл Вордом и запускаем Application.Run("MACRO_NAME") |
|