29.01.2016, 10:10 | #1 |
Участник
|
Версия 2009 Classic
Систенный язык НЕ русский. Однажды появилась необходимость хранить и печатать часть информации (названия фирм, адреса и тд.) на русском языке. Вышел из положения нарисовав отдельный фонт, в результате в базе хранится текст в виде (Ą/Ī "Āåķņįóķźåšń") а на экран и печать выводится (АО "РогаИКопыта"). Теперь стало нужно отправить информацию в виде текстовых файлов (XML), а у меня не получается вывести хоть какой-нибудь текст на русском |
|
29.01.2016, 11:33 | #2 |
Участник
|
Сам вижу такое решение:
Созданный XML открыть Вордом, загрузить и запустить заранее созданный макрос по конвертации символов Кто нибудь подскажет как из Навижн "загрузить и запустить макрос"? |
|
29.01.2016, 16:27 | #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") |
|
24.02.2016, 11:55 | #4 |
Участник
|
Разобрался почему не получалось - русские буквы оказывается прописываются в файл не одним, а двумя байтами
Большие буквы начиная с [d0 90], маленькие с [d0 b0] |
|
25.02.2016, 13:58 | #5 |
Участник
|
Можно попробовать перегрузить данные в 'Microsoft ActiveX Data Objects 2.8 Library'.Stream и там уже поменять кодировку на любую функцией
Код: ADOStream.Position := 0; ADOStream.Charset('UTF-8'); Вроде Нав нормально с xml работает.. т.е. можно грузить напрямую AddElement2(xmlNode2,'НаименованиеЮЛ','') где AddElem2 Код: NewChildNode := xmlDoc.createNode('element', NodeName, xmlns); IF NodeText <> '' THEN NewChildNode.text := NodeText; XMLNodeP.appendChild(NewChildNode); |
|