ODAC и кириллица

Модератор: Модераторы

Ответить
gelios
незнакомец
Сообщения: 4
Зарегистрирован: 23.06.2009 13:19:55

ODAC и кириллица

Сообщение gelios »

Имеется lazarus 0.9.26.2 beta, fpc 2.2.2, odac 4.70.
вместо кириллицы - пробелы. если вставлять кириллицу из fpc, то потом запись отображается корректно, но в базу пишется как понял в кодировке utf8. Кодировка базы - CL8MSWIN1251.
где и что нужно подточить напильником?
Mr.Smart
долгожитель
Сообщения: 1796
Зарегистрирован: 29.03.2008 00:01:11
Откуда: из леса!

Сообщение Mr.Smart »

При записи/чтении сам меняй кодировку UTF8ToAnsi/AnsiToUTF8.
gelios
незнакомец
Сообщения: 4
Зарегистрирован: 23.06.2009 13:19:55

Сообщение gelios »

это первое, что я попробовал - не помогает.
Mr.Smart
долгожитель
Сообщения: 1796
Зарегистрирован: 29.03.2008 00:01:11
Откуда: из леса!

Сообщение Mr.Smart »

Приведите код чтения/записи.
gelios
незнакомец
Сообщения: 4
Зарегистрирован: 23.06.2009 13:19:55

Сообщение gelios »

Код: Выделить всё

procedure TForm1.OraQuery1AfterScroll(DataSet: TDataSet);
begin
  Label1.Caption:= Utf8ToAnsi(dataset.Fields[1].AsString);
end; 
voltron
новенький
Сообщения: 64
Зарегистрирован: 06.07.2007 13:27:46
Откуда: Украина

Сообщение voltron »

Так вам вроде бы наоборот надо. Из базы вы получаете Win1251, а LCL работает с UTF8. Т.е. в данном примере нужно использовать AnsiToUtf8
gelios
незнакомец
Сообщения: 4
Зарегистрирован: 23.06.2009 13:19:55

Сообщение gelios »

Cемён-Семёныч :) заработало :P
я правильно понимаю, что всю обработку строк уже нужно делать ручками (в частности конвертацию)?

Добавлено спустя 1 час 7 секунд:
чувствую, что нужно у класса TStringFiled малость подправить методы SetAsString/GetAsString.
Достаточно ли после внесения изменения в IDE выбрать пункт "Сервис"|"Собрать Lazarus"?
voltron
новенький
Сообщения: 64
Зарегистрирован: 06.07.2007 13:27:46
Откуда: Украина

Сообщение voltron »

gelios писал(а):я правильно понимаю, что всю обработку строк уже нужно делать ручками (в частности конвертацию)?

Да, если строки у вас в кодировке отличной от UTF8, то конвертировать нужно ручками. Не знаю, умеет ли оракл, как Firebird, автоматически перекодировать данные при указании кодировки соединения...
gelios писал(а):Достаточно ли после внесения изменения в IDE выбрать пункт "Сервис"|"Собрать Lazarus"?

Думаю, достаточно. Пусть более опытные поправят, если ошибаюсь.
Ответить