Существует таблица Firebird с 2 полями BLOB-объектов - полем blob_binary (подтип = 0) и полем blob_Text (подтип = 1, utf-8).БД имеет utf-кодировку.Соединение имеет кодировку UTF.Версия Delphi - 10.2.3.Я использую компоненты FireDac для доступа к данным.Сервер Firebird 3.
![enter image description here](https://i.stack.imgur.com/i1kfy.png)
Приложение должно записывать данные из текстового файла (utf-8) в оба поля двоичных объектов таблицы «Содержимое».Текстовый файл, который я должен написать в BLOB-объектах, содержит текст на английском, русском и грузинском языках (см. Изображение).
Файлы проекта и БД, с правами на редактирование
Приведенный ниже код записывает текст в поле двоичного двоичного объекта , но символы странные (не символы ???. Может быть символы Ansi?).
Код для сохранения текстового файла в Blob_Binary поле:
ID:=Query1.FieldByName('Content_id').asInteger;
OpenDialog1.Execute;
Query1.Close;
Query1.SQL.Text := 'SELECT * FROM content where Content_id=:id';
Query1.Params[0].AsInteger:=ID;
Query1.open;
Query1.Edit;
(Query1.FieldByName('BLOB_BINARY') as TBlobField).LoadFromFile(OpenDialog1.FileName);
Query1.Post;
Когда я сохраняю текстовый файл в двоичном блобе поле, тогда:
1) если я сохранил текстовый файл в кодировке utf-BOM, я получаю вобычный текст двоичного двоичного объекта и
2) странные символы, если я выберу кодировку текстового файла utf
Но когда я использую тот же код для записи данных в текстовое пятно данные поля выглядят странно, как китайские символы (см. Изображение).
![enter image description here](https://i.stack.imgur.com/vzJlk.png)
Что я не так делаю?Как исправить этот код, чтобы написать в обоих полях UTF символов?
Я пробовал другие решения, но результат тот же.Например:
ID:=Query1.FieldByName('Content_id').asInteger;
OpenDialog1.Execute;
Query1.Close;
Query1.SQL.Text := 'Update content set Blob_Text=:Blob_Text where
Content_id=:id';
Query1.Params[0].DataType := ftBlob;
Query1.Params[0].AsStream := TFileStream.Create(OpenDialog1.FileName, fmOpenRead);
Query1.Params[1].AsInteger:=ID;
Query1.ExecSQL;
Update1: Как я понял, если я сохраняю txt-файл как "unicode" в noteped (или LE UMS-2 BOM в noteped ++), он сохраняется нормальнов текстовом блобе исчезли символы скулов.Аналогично, txt-файл в двоичном двоичном объекте сохраняется нормально, если он находится в кодировке utf-BOM.Хотя очень неудобно сохранять файл в utf-8 .
![enter image description here](https://i.stack.imgur.com/YXh9f.png)