|
|
|
| В текстовых полях таблиц базы Аксеса среди "нормальной" латиницы находятся специфические центральноевропейские символы типа ó, ł, ś, др.
Символы "нормально" живут в таблицах, формах и отчетах.
В то-же время при выполениии функций, возвращающих строки путем извлечения данных из таких полей через рекордсет, эти символы в лучшем случае превращаются в ближайшие по начертанию латинские (без "хвостиков").
Буду благодарен за советы относительно лечения сей болезни. | |
|
| |
|
|
|
| Видимо у вас на каком-то этапе происходит преобразование Unicode -> ANSI и из-за региональных настроек эти символы портятся.
Где применяется разультат вашей функции?
Какие строковые функции используются?
Я создал таблицу с текстовым полем и внес туда символы Alt+0243, Alt+0244 (ó,ô), выполнил инструкцию:
s = CurrentDb.OpenRecordset("Table4").Fields("[MyText]")
' s = DLookup("[MyText]", "[Table4]") - тот же результат
MsgBox AscW(s) & " " & AscW(Mid(s, 2))
MsgBox AscW(ChrW(AscW(s))) & " " & AscW(ChrW(AscW(Mid(s, 2))))
|
Получил правильные коды. Если просто вывести строку в MsgBox, то получу "oo", т.е. выполняется преобразование в ANSI и получаются символы с кодом 111. | |
|
| |
|
|
|
| Спасибо за ответ.
Технология проблемы следующая
В таблице живут текстовые поля с префиксами в именах для разных языков (украинский, польский, английский).
В этих полях центральноевропейские символы отображаются нормально (где они имеют место быть)
На основании записей этой таблицы (соответствующего языкового поля) и числовых полей других таблиц VBA выводит через Scripting.FileSystemObject текстовый файл (структура XML, но это не столь важно).
При выводе строчек в файл функцией перекодировываю их в UTF-8:
http://hiprog.com/forum/read.php?id_forum=1&id_theme=3086&page=1
На данное время вопрос решен заменой в таблице центральноевропейских символов соответствующим набором (ó,ô), например Ilość.
Конечно, решение нельзя назвать красивым... | |
|
| |