alexs писал(а):lemon писал(а):А чем и как конвертировать dbf в utf8 ?
Конвертер пишется в 5 строк

lemon писал(а):в Interbase при подключении указать клиентскую кодировку utf8
Ну я не буду оригинальным - UIB + FBDataSet

(если там действительно Interbase, а не FireBird - заодно потестишь, как с ним работа обстоит)
Вопрос : UIB + FBDataSet - это два разных компонента ?
Где взять FBDataSet - нашел .
Как его правильно ставить ? ( Пакет, Открыть файл пакета (lpk) ? там три пакета dcl_fb_id_dataset , fbdemofpc ,uibeditors)
А где взять UIB ?
PS Вопросов много ! Все впервые .
Добавлено спустя 1 час 15 минут 15 секунд:Пробую ставить FBDataSet
Открыть файл пакета (lpk)
Там три пакета dcl_fb_id_dataset , fbdemofpc ,uibeditors)
Получил сообщение :
C:lazarus_libFBDataSetfbcustomdataset.pas(1,1) Fatal: Can't find unit jvuiblib used by fbcustomdataset
Как правильно ставить FBDataSet ?
Добавлено спустя 2 минуты 54 секунды:И еще , такой вопросик :
Какие компоненты из UIB + FBDataSet положить на форму ,
что бы получить доступ к InterBase таблицам ?
Добавлено спустя 14 минут 57 секунд:Подключаю компонент UIBDataBase к InterBase базе содержащей таблицы с кодировкой WIN1251 ,
Если кодировку в свойствах CharacterSet оставить WIN1251 - то подключается .
Если кодировку ставить UTF8 - то нет и пишет character set UTF8 is not defined .
Где нужно подправить еще ?
Добавлено спустя 8 минут 42 секунды:И так, что получилось :
На форму разместил:
1 UIDataBase1 , в свойствах указано
DatabaseName = interbaseserrv:/current/db/base1.gdb
CharacterSet =csWIN1251
2 UIDataSet1
3 UIBTransaction1
4 Datasource1
5 TDBGreed1
И так , 5 компонентов .
В гриде появляется таблица .где вместо русских букв стоят вопросы .
Как лечить ?
Если при смене CharacterSet =csUTF8
к базе невозможно подключиться ? пишет character set UTF8 is not defined .
Добавлено спустя 1 минуту 1 секунду:Я вообще не использовал ни одного компонента из FBDataSet .
Может он и не нужет тут .
Добавлено спустя 2 минуты 57 секунд:alexs писал(а):Ну я не буду оригинальным - UIB + FBDataSet

(если там действительно Interbase, а не FireBird - заодно потестишь, как с ним работа обстоит)
Может тут FBDataSet вообще не нужен ???
Я же без него получил доступ к базе .
Или я что-то не так делаю ?
Добавлено спустя 3 минуты 19 секунд:Vadim писал(а):lemon писал(а):Какие это 5 строк и на чем ?
На том, что у Вас уже есть.

Если Вы используете компонент TDbf, то перекодировка будет выглядеть примерно так:
- Код: Выделить всё
Dbf1.First;
Dbf1.Edit;
For i:=0 To Dbf1.RecordCount-1 Do
Dbf1.FieldByName('Текстовое_поле').AsString:=ConsoleToUtf8(Dbf1.FieldByName('Текстовое_поле').AsString);
Предварительно нужно выяснить коэффициент отношения максимальной длины строки, которая хранится в текстовом поле к длине самого поля. Если он больше, чем 1/2, то длину поля следует увеличить до соблюдения этого коэффициента, т.к. русский символ в кодировке UTF8 занимает 2 байта, а не один.
попробую , спасибо !!!
Добавлено спустя 22 минуты 18 секунд:Vadim писал(а):lemon писал(а):Какие это 5 строк и на чем ?
На том, что у Вас уже есть.

Если Вы используете компонент TDbf, то перекодировка будет выглядеть примерно так:
- Код: Выделить всё
Dbf1.First;
Dbf1.Edit;
For i:=0 To Dbf1.RecordCount-1 Do
Dbf1.FieldByName('Текстовое_поле').AsString:=ConsoleToUtf8(Dbf1.FieldByName('Текстовое_поле').AsString);
Предварительно нужно выяснить коэффициент отношения максимальной длины строки, которая хранится в текстовом поле к длине самого поля. Если он больше, чем 1/2, то длину поля следует увеличить до соблюдения этого коэффициента, т.к. русский символ в кодировке UTF8 занимает 2 байта, а не один.
Так, сделал . Что то не заработало .
Вот результат :
http://project1.fo.ru/image/1014/2906_s ... 000004.jpg Впервой строке должно быть слово "солнце"
( отработал только первую строчку , по все мне стал )
- Код: Выделить всё
procedure TForm1.Button1Click(Sender: TObject);
var i:integer ;
begin
Dbf1.First;
Dbf1.Edit;
For i:=0 To Dbf1.RecordCount-1 Do
Dbf1.FieldByName('FIL').AsString:=ConsoleToUtf8(Dbf1.FieldByName('FIL').AsString);
end;
Добавлено спустя 5 минут 24 секунды:Вот сам проект
http://project1.fo.ru/file/944/2200_866 ... 4-2011.rar