Rambler's Top100
Форум: MS ACCESSVBVBA MS OfficeMS SQL server
Новые сообщения: 0000

Форум: MS ACCESS

Вопросы связанные с MS ACCESS

Обновить визитку
Участники «Online»
Все участники

 
 

Доброго времени суток, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Нужна помощь с Юникодом (А-03)
 
 автор: Vik   (02.09.2008 в 00:46)   личное сообщение
 
 

В текстовых полях таблиц базы Аксеса среди "нормальной" латиницы находятся специфические центральноевропейские символы типа ó, ł, ś, др.

Символы "нормально" живут в таблицах, формах и отчетах.

В то-же время при выполениии функций, возвращающих строки путем извлечения данных из таких полей через рекордсет, эти символы в лучшем случае превращаются в ближайшие по начертанию латинские (без "хвостиков").

Буду благодарен за советы относительно лечения сей болезни.

  Ответить  
 
 автор: Анатолий (Киев)   (02.09.2008 в 12:25)   личное сообщение
 
 

Видимо у вас на каком-то этапе происходит преобразование 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.

  Ответить  
 
 автор: Vik   (07.09.2008 в 20:58)   личное сообщение
 
 

Спасибо за ответ.

Технология проблемы следующая

В таблице живут текстовые поля с префиксами в именах для разных языков (украинский, польский, английский).

В этих полях центральноевропейские символы отображаются нормально (где они имеют место быть)

На основании записей этой таблицы (соответствующего языкового поля) и числовых полей других таблиц VBA выводит через Scripting.FileSystemObject текстовый файл (структура XML, но это не столь важно).

При выводе строчек в файл функцией перекодировываю их в UTF-8:
http://hiprog.com/forum/read.php?id_forum=1&id_theme=3086&page=1

На данное время вопрос решен заменой в таблице центральноевропейских символов соответствующим набором (ó,ô), например Ilość.

Конечно, решение нельзя назвать красивым...

  Ответить  
HiProg.com - Технологии программирования
Rambler's Top100 TopList