powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Кракозябры и иероглифы при чтении и записи из текстового файла или Memo в blob и обратно
25 сообщений из 60, страница 1 из 3
Кракозябры и иероглифы при чтении и записи из текстового файла или Memo в blob и обратно
    #39772562
bastibubu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть бд на firebird3. Программа записывает данные из файла или из memo в blob и обратно- читает из blob в мемо. В бд есть 2 блоб поля: blob_Binary(subtype=0) и Blob_Text(subtype=1,utf-8). Кодировка везде Utf-8.

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
procedure TfMain.bInBlobClick(Sender: TObject);
 var
  ms : TMemoryStream;
begin
      ms := TMemoryStream.Create;
  try
      memo2.lines.savetostream(ms, TEncoding.UTF8);             
      ms.position := 0;
  
     Query1.Edit;
     TBlobField(Query1.FieldByName('BLOB_TEXT')).LoadFromStream(ms);
     Query1.Post;
  finally
     ms.free;
  end;
end;



Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
procedure TfMain.bRead2Click(Sender: TObject);
var
 ms : TMemoryStream;
begin
     ms := TMemoryStream.Create;
  try
     TBlobField(Query1.FieldByName('BLOB_TEXT')).SaveToStream(ms);
     ms.position := 0;
     memo2.lines.loadfromstream(ms);
  finally
     ms.free;
  end;


end;

Когда ввожу текст в мемо на англииском, русском и грузинских языках, вместо грузинских букв в блобах сохраняются кракозябры и иэроглифы (см скрин), хотя при чтении блобы нормально читаются и в обоих мемо отображаются исходные тексты.
И иногда, без всяких закономерностей, при чтении текстового блоба выводит такую ошибку:
авторEEncodingError 'No mapping for the unicode character exists in the target multi-byte code page'
Что делаю неправильно при сохранении данных в блобах, чтобы текстовый блоб был читабельным и как избегать эту ошибку?
...
Рейтинг: 0 / 0
Кракозябры и иероглифы при чтении и записи из текстового файла или Memo в blob и обратно
    #39772563
bastibubu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
кодировка бд и таблицы utf-8
...
Рейтинг: 0 / 0
Кракозябры и иероглифы при чтении и записи из текстового файла или Memo в blob и обратно
    #39772564
bastibubu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
такие иероглифы сохраняются в обоих блобах, но при чтений в мемо правильно отображается исходный текст.
...
Рейтинг: 0 / 0
Кракозябры и иероглифы при чтении и записи из текстового файла или Memo в blob и обратно
    #39772565
bastibubu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
так сохраняется текстовый файл в обоих блобах. Текст файла видно в мемо1 и мемо2, внизу.
...
Рейтинг: 0 / 0
Кракозябры и иероглифы при чтении и записи из текстового файла или Memo в blob и обратно
    #39772584
goldmi45
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bastibubu,

Версию Delphi озвучьте и какие компоненты доступа используете.
...
Рейтинг: 0 / 0
Кракозябры и иероглифы при чтении и записи из текстового файла или Memo в blob и обратно
    #39772622
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В самом приложении, в настройках подключения к базе, надеюсь, кодировку UTF8 указываешь?
...
Рейтинг: 0 / 0
Кракозябры и иероглифы при чтении и записи из текстового файла или Memo в blob и обратно
    #39772637
Фотография Док
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bastibubuЧто делаю неправильно при сохранении данных в блобах, чтобы текстовый блоб был читабельным и как избегать эту ошибку?
если напрямую в IBE редактировать тексты блобов, кракозябров нет?
...
Рейтинг: 0 / 0
Кракозябры и иероглифы при чтении и записи из текстового файла или Memo в blob и обратно
    #39772730
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
12.02.2019 3:35, bastibubu пишет:
> Есть бд на firebird3. Программа записывает данные из файла или из memo в blob и обратно- читает из blob в мемо.

какие компоненты доступа?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Кракозябры и иероглифы при чтении и записи из текстового файла или Memo в blob и обратно
    #39772807
bastibubu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
X11В самом приложении, в настройках подключения к базе, надеюсь, кодировку UTF8 указываешь?
Да, конечно. (см скрин)

Мимопроходящийкакие компоненты доступа?
FireDac. fdQuery
...
Рейтинг: 0 / 0
Кракозябры и иероглифы при чтении и записи из текстового файла или Memo в blob и обратно
    #39772809
bastibubu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
...
Рейтинг: 0 / 0
Кракозябры и иероглифы при чтении и записи из текстового файла или Memo в blob и обратно
    #39772810
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
12.02.2019 13:48, bastibubu пишет:
> FireDac. fdQuery

тряси Арефьева.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Кракозябры и иероглифы при чтении и записи из текстового файла или Memo в blob и обратно
    #39772818
bastibubu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Докесли напрямую в IBE редактировать тексты блобов, кракозябров нет?
в текстовом нормально читается, в бинарном-нет (см. скрин)

goldmi45 Версию Delphi озвучьте и какие компоненты доступа используете.

Delphi 10.2.3, компоненты FireDac (fdQuery)
...
Рейтинг: 0 / 0
Кракозябры и иероглифы при чтении и записи из текстового файла или Memo в blob и обратно
    #39772907
Фотография Док
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящийтряси Арефьева
я бы и Хвастунову еще написал. У него тоже встречаются "неюникодные" таблички
...
Рейтинг: 0 / 0
Кракозябры и иероглифы при чтении и записи из текстового файла или Memo в blob и обратно
    #39772925
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bastibubuX11В самом приложении, в настройках подключения к базе, надеюсь, кодировку UTF8 указываешь?
Да, конечно. (см скрин)Попробуй указать в настройках соединения FireDac (и только там) UTF-16

Кроме того, к полю текстового блоба можно обращаться через AsString
...
Рейтинг: 0 / 0
Кракозябры и иероглифы при чтении и записи из текстового файла или Memo в blob и обратно
    #39772945
bastibubu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
_Vasilisk_Попробуй указать в настройках соединения FireDac (и только там) UTF-16
_Vasilisk_ , нет в комбо такой кодировки

_Vasilisk_к полю текстового блоба можно обращаться через AsString
При записи или чтении? Напишите, пожалуйста, что вы имеете в виду
...
Рейтинг: 0 / 0
Кракозябры и иероглифы при чтении и записи из текстового файла или Memo в blob и обратно
    #39772953
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bastibubuнет в комбо такой кодировкиUNICODE_LE

bastibubu_Vasilisk_к полю текстового блоба можно обращаться через AsStringПри записи или чтении? Напишите, пожалуйста, что вы имеете в видуВместо
bastibubu
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
procedure TfMain.bInBlobClick(Sender: TObject);
 var
  ms : TMemoryStream;
begin
      ms := TMemoryStream.Create;
  try
      memo2.lines.savetostream(ms, TEncoding.UTF8);             
      ms.position := 0;
  
     Query1.Edit;
     TBlobField(Query1.FieldByName('BLOB_TEXT')).LoadFromStream(ms);
     Query1.Post;
  finally
     ms.free;
  end;
end;




Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
procedure TfMain.bRead2Click(Sender: TObject);
var
 ms : TMemoryStream;
begin
     ms := TMemoryStream.Create;
  try
     TBlobField(Query1.FieldByName('BLOB_TEXT')).SaveToStream(ms);
     ms.position := 0;
     memo2.lines.loadfromstream(ms);
  finally
     ms.free;
  end;
end;

писать
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
procedure TfMain.bInBlobClick(Sender: TObject);
begin
  Query1.Edit;
  Query1.FieldByName('BLOB_TEXT').AsString := memo2.Lines.Text;
  Query1.Post;
end;

procedure TfMain.bRead2Click(Sender: TObject);
begin
  memo2.Lines.Text := Query1.FieldByName('BLOB_TEXT').AsString;
end;
...
Рейтинг: 0 / 0
Кракозябры и иероглифы при чтении и записи из текстового файла или Memo в blob и обратно
    #39772976
Фотография Док
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bastibubuв текстовом нормально читается, в бинарном-нет (см. скрин)
потому что средствами IBE в бинарный блоб текст записывается как ANSI, а в текстовый блоб как UTF8
...
Рейтинг: 0 / 0
Кракозябры и иероглифы при чтении и записи из текстового файла или Memo в blob и обратно
    #39773015
bastibubu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
_Vasilisk_ , работает в случае Blob_Text( и хранит и выводит правильно) а вот в случае бинарного- хранит как иероглифы(ANSI?) хотя выводит нормально. :)

Код записи в blob_binary:
Код: pascal
1.
2.
3.
Query1.Edit;
(Query1.FieldByName('BLOB_BINARY') as TBlobField).LoadFromFile(OpenDialog1.FileName);
Query1.Post;
...
Рейтинг: 0 / 0
Кракозябры и иероглифы при чтении и записи из текстового файла или Memo в blob и обратно
    #39773044
bastibubu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
_Vasilisk_, перепутал с кодом. Это код записи в blob_binary из внешнего текстового файла:
Код: pascal
1.
2.
3.
Query1.Edit;
(Query1.FieldByName('BLOB_BINARY') as TBlobField).LoadFromFile(OpenDialog1.FileName);
Query1.Post;


в blob_binary получаю иероглифы
...
Рейтинг: 0 / 0
Кракозябры и иероглифы при чтении и записи из текстового файла или Memo в blob и обратно
    #39773047
bastibubu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
нет, не в бинарном блобе а в blob_text получаю иероглифы. Сильно запутался. :)

Код: pascal
1.
2.
3.
Query1.Edit;
(Query1.FieldByName('BLOB_TEXT') as TBlobField).LoadFromFile(OpenDialog1.FileName);
Query1.Post;
...
Рейтинг: 0 / 0
Кракозябры и иероглифы при чтении и записи из текстового файла или Memo в blob и обратно
    #39773108
bastibubu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
https://en.wikipedia.org/wiki/Mojibake#Caucasian_languages
хотя ничем знание причины не помогает поскольку все уже пробовал и перепроверял. Ж(
...
Рейтинг: 0 / 0
Кракозябры и иероглифы при чтении и записи из текстового файла или Memo в blob и обратно
    #39773376
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bastibubuв blob_binary получаю иероглифы blob_binary не предназначен для хранения текста. Он предназначен для хранения бинарных данных. Т.е. какие байты туда записали, те же байты и прочитали. Вне зависимости от настроек кодировок
...
Рейтинг: 0 / 0
Кракозябры и иероглифы при чтении и записи из текстового файла или Memo в blob и обратно
    #39773413
bastibubu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
_Vasilisk_bastibubuв blob_binary получаю иероглифы blob_binary не предназначен для хранения текста. Он предназначен для хранения бинарных данных. Т.е. какие байты туда записали, те же байты и прочитали. Вне зависимости от настроек кодировок
_Vasilisk_ , это я понимаю. Дело в том, что когда я тестировал ваше предложение, оказалось что текстовый файл был в кодировке utf-BOM. В этом случае файл в memo был нормально прочитан но как поменял utf-BOM на utf уже выводил иероглифы Ansi. А мне нужно, наоборот, файл создать в utf поскольку везде кодировка utf (и в бд и в таблице, и в FireDac Connection Definition).
И что главное- как быть с китайскими иероглифами в blob_text?
...
Рейтинг: 0 / 0
Кракозябры и иероглифы при чтении и записи из текстового файла или Memo в blob и обратно
    #39773450
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Файл бинарный? Используйте BLOB BINARY и Load/SaveStream

Файл текстовый? Используйте BLOB TEXT и AsString.

Ничего другого мудрить не нужно.

Что не получится из этих рекомендаций - спрашивайте
...
Рейтинг: 0 / 0
Кракозябры и иероглифы при чтении и записи из текстового файла или Memo в blob и обратно
    #39773491
Фотография Док
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bastibubuИ что главное- как быть с китайскими иероглифами в blob_text?
"Ох, уж эти сказки ...." ©


картинко ... потому что движок не позволяет отображать китайщину, а альт коды мне искать к ним лень









Я же говорю, стучись к Хвастунову. У него грид кракозябры, вероятнее всего, отображает
...
Рейтинг: 0 / 0
25 сообщений из 60, страница 1 из 3
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Кракозябры и иероглифы при чтении и записи из текстового файла или Memo в blob и обратно
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]