Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.03.2013, 07:42   #1
dimmm
 
Регистрация: 15.04.2009
Сообщений: 7
По умолчанию Вопрос с кодировками при получении фонетических символов звуков английского языка из БД MS Acсess

Доброго времени суток.
Есть таблица БД MS Access 2000. В текстовом поле этой таблицы находятся фонетические символы звуков английского языка. Попадают данные в это поле так: в MS Word делаю вставку символа и копирую через буфер обмена в MS Acсess. Вопрос в следующем. Пытаюсь достать из программы на Delphi 7 данные из этого поля. Получается пока не очень: фонетические символы, идентичные буквам латинского алфавита (например, k или t), выводятся нормально, а вот остальные выводятся как знаки вопроса.

Код в Delphi 7 такой:
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('SELECT * FROM Table1 WHERE Nomer = 1 ');
ADOQuery1.Open;
ShowMessage( ADOQuery1.FieldByName('Field1').AsS tring );
ADOQuery1.Close;

То же самое проделал в Lazarus (FPC 2.6.0) c тем же результатом. Использование AnsiToUTF8, SysToUTF8 не помогло.

Что-нибудь подскажете по решению вышеописанной проблемы?

Последний раз редактировалось dimmm; 05.03.2013 в 07:45.
dimmm вне форума Ответить с цитированием
Старый 05.03.2013, 09:57   #2
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,527
По умолчанию

Код:
var
  sw: WideString;

  sw:=myfield.variant;
может попробовать так.
или
Код:
var
  buff: wideString[100];

  myfield.GetData(buff);
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 05.03.2013 в 10:01.
evg_m вне форума Ответить с цитированием
Старый 05.03.2013, 23:15   #3
dimmm
 
Регистрация: 15.04.2009
Сообщений: 7
По умолчанию

evg_m, если я правильно понял то, что Вы предложили попробовать, то вот такой код

var S: WideString;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('SELECT * FROM Table1 WHERE Nomer = 1 ');
ADOQuery1.Open;
S:=ADOQuery1.FieldByName('Field1'). AsVariant;
ShowMessage(S);
ADOQuery1.Close;

к сожалению, выдал тот же результат: вместо нужных символов - знаки вопроса.

Последний раз редактировалось dimmm; 05.03.2013 в 23:24.
dimmm вне форума Ответить с цитированием
Старый 05.03.2013, 23:33   #4
dimmm
 
Регистрация: 15.04.2009
Сообщений: 7
По умолчанию

Немного поэкспериментировал. Оказалось, что все символы диапазонов Юникода "Расширенная латиница - A", "Расширенная латиница - B", "Фонетические значки", "Греческий основной" выводятся в виде знаков вопроса. Символы "Латиницы-1" выводятся частично в виде знаков вопроса, частично другими символами, т.е. не теми, которые должны быть. "Основная латиница" выводится правильно.
dimmm вне форума Ответить с цитированием
Старый 06.03.2013, 00:58   #5
rdama
Форумчанин
 
Аватар для rdama
 
Регистрация: 25.07.2009
Сообщений: 533
По умолчанию

Вот есть вероятность что в UTF есть все эти символы. Но 7 не поддерживает UTF(VCL библиотека).
Берите более поздние версии.
Маразм крепчал. Еноты пели...
R-style Dataknowlege Access Member Account (RDAMA)
rdama вне форума Ответить с цитированием
Старый 06.03.2013, 04:47   #6
Vapaamies
Ваш К. О.
Участник клуба
 
Аватар для Vapaamies
 
Регистрация: 26.12.2012
Сообщений: 1,799
По умолчанию

Нужно попробовать вытащить исходный OleVariant из ADO Recordset, который содержит еще неиспорченный Unicode. Как-то так:
Код:
MessageBoxW(
  Application.Handle,
  Pointer(WideString(AdoQuery1.Recordset.Fields['Field1'].Value)),
  Pointer(WideString(Application.Title)), 
  MB_INFORMATION
);
Vapaamies вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ошибка при получении данных Lkon Microsoft Office Excel 4 22.02.2012 00:02
Создание чередования слов, для обучения английского языка CiyPetrov Помощь студентам 3 27.10.2010 04:02
Программа для изучения Английского языка vasek123 Софт 5 17.06.2010 08:08
Банальные проблемы с кодировками и наборами символов. Killer_djon PHP 5 02.06.2009 14:38