powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / База FB 3.0 в кодировке 1251 надо записать несколько полей в юникоде
25 сообщений из 30, страница 1 из 2
База FB 3.0 в кодировке 1251 надо записать несколько полей в юникоде
    #39850765
antox
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Никак не могу разобраться, как в базу кодировке 1251 записать/прочитать национальные символы Καιρός

Может ч-з BLOB, ведь при таком раскладе БД неважно то там? Но как написать непонятно.

Пробую так:

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
var s: string;
begin
     s:='Καιρός';

     StreamMem:=TMemoryStream.Create;

     L := length(s);
     StreamMem.WriteBuffer(L, SizeOf(L));
     StreamMem.WriteBuffer(s[1], L);

      ibDataSet1.Edit;
      (ibDataSet1.FieldByName('FBLOB') as TBlobField).LoadFromStream(StreamMem);
      ibDataSet1.Post;

     FreeAndNil(StreamMem);
end;



Потом пытаюсь получить:

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
     StreamMem:=TMemoryStream.Create;

      IF (ibDataSet1.FieldByName('FBLOB') as TBlobField).BlobSize>0 Then
       begin
        (ibDataSet1.FieldByName('FBLOB') as TBlobField).SaveToStream(StreamMem);
         StreamMem.Position:=0;
         StreamMem.ReadBuffer(L, SizeOf(L));
         SetLength(S, L);
         StreamMem.ReadBuffer(S[1], L);
         showmessage(s);
       end;
     FreeAndNil(StreamMem);
    end;



Поле - BLOB SUB_TYPE 0 SEGMENT SIZE 80

На выходе получаю ' Και44 ', неправильно считаю байты? Как получить корректно?
...
Рейтинг: 0 / 0
База FB 3.0 в кодировке 1251 надо записать несколько полей в юникоде
    #39850766
antox
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в s пишу значение ' Καιρός ', а то что-то скрипт вверху преобразовал
...
Рейтинг: 0 / 0
База FB 3.0 в кодировке 1251 надо записать несколько полей в юникоде
    #39850767
antox
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Или можно как-то кодами писать в обычное строковое поле, а при выводе в программе преобразовывать?
...
Рейтинг: 0 / 0
База FB 3.0 в кодировке 1251 надо записать несколько полей в юникоде
    #39850769
sql2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
antoxИли можно как-то кодами писать в обычное строковое поле, а при выводе в программе преобразовывать?

? кодировать в base64?
...
Рейтинг: 0 / 0
База FB 3.0 в кодировке 1251 надо записать несколько полей в юникоде
    #39850770
antox
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sql2012antoxИли можно как-то кодами писать в обычное строковое поле, а при выводе в программе преобразовывать?

? кодировать в base64?

Имя сестра, имя )

Можно пример реализации?
...
Рейтинг: 0 / 0
База FB 3.0 в кодировке 1251 надо записать несколько полей в юникоде
    #39850771
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. Этот вопрос - не по дельфи.
2. Кодировка базы - это всего-лишь кодировка по-умолчанию для полей, которым кодировка не указана явно.
...
Рейтинг: 0 / 0
База FB 3.0 в кодировке 1251 надо записать несколько полей в юникоде
    #39850773
antox
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YuRock,

И? Как записать в БД Καιρός и прочитать из базы, если база FB 3.0 win1251 ?
...
Рейтинг: 0 / 0
База FB 3.0 в кодировке 1251 надо записать несколько полей в юникоде
    #39850784
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
antoxКак записать в БД Καιρός и прочитать из базы, если база FB 3.0 win1251 ?
1. Создать поле с кодировкой UTF-8.
2. При подключении к базе указать кодировку подключения UTF-8.
3. Подготовить запрос INSERT с параметрами.
4. Соответствующему параметру присвоить значение строки в кодировке UTF-8.
5. Выполнить запрос.
6. Закоммитить транзакцию.

Всё, телемаркет.
...
Рейтинг: 0 / 0
База FB 3.0 в кодировке 1251 надо записать несколько полей в юникоде
    #39850785
antox
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
п.2 Никак, коннект один, все данные в 1251 и подключение соответственно тоже, делать отдельный коннект на UTF8 для нескольких полей?

Мне бы конвертировать туда/сюда, но не получается
...
Рейтинг: 0 / 0
База FB 3.0 в кодировке 1251 надо записать несколько полей в юникоде
    #39850786
antox
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Через потоки и BLOB почти получилось, но почему-то не вся строка читается или пишется, не могу понять почему так получается
...
Рейтинг: 0 / 0
База FB 3.0 в кодировке 1251 надо записать несколько полей в юникоде
    #39850787
antox
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я про первый свой пост
...
Рейтинг: 0 / 0
База FB 3.0 в кодировке 1251 надо записать несколько полей в юникоде
    #39850788
antox
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мне любой юникод, только чтобы записать Καιρός и прочитать так же. Я так понял, что BLOB должен подойти, ведь ему все равно, что за инфу в него суют...
...
Рейтинг: 0 / 0
База FB 3.0 в кодировке 1251 надо записать несколько полей в юникоде
    #39850807
antox
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Короче сделал ч-з IntToHex и обратно )
...
Рейтинг: 0 / 0
База FB 3.0 в кодировке 1251 надо записать несколько полей в юникоде
    #39850810
ёёёёё
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
antoxКороче сделал ч-з IntToHex и обратно )

Кросавчег

...
Рейтинг: 0 / 0
База FB 3.0 в кодировке 1251 надо записать несколько полей в юникоде
    #39850818
antox
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну, другого выхода я не нашёл. Выё с кодировками и несколькими коннектами не вариант, на данном этапе.
...
Рейтинг: 0 / 0
База FB 3.0 в кодировке 1251 надо записать несколько полей в юникоде
    #39850824
sql2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
antoxКороче сделал ч-з IntToHex и обратно )

а что ж не через base64?
...
Рейтинг: 0 / 0
База FB 3.0 в кодировке 1251 надо записать несколько полей в юникоде
    #39850835
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
antox> Никак не могу разобраться, как в базу кодировке 1251
antox> записать/прочитать национальные символы ??????

1. Какая версия Delphi ?
2. Это нужно для BLOB или для строкового поля ?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
База FB 3.0 в кодировке 1251 надо записать несколько полей в юникоде
    #39850837
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
antox,

тю.
http://www.ibase.ru/unicode_faq/
дальше, весьма подозрителен кусок кода
StreamMem.ReadBuffer(S[1], L);
если речь идет про юникод, то S должно быть unicodestring. В общем, поскольку блоб в ФБ при чтении и записи никак не преобразуется (особенно если он имеет тип 0), то проблема в коде дельфи, который "корёжит" строку.
...
Рейтинг: 0 / 0
База FB 3.0 в кодировке 1251 надо записать несколько полей в юникоде
    #39850847
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
antoxYuRock,

И? Как записать в БД Καιρός и прочитать из базы, если база FB 3.0 win1251 ?Еще раз. Кодировка базы не имеет отношения к кодировке поля, указанной явно.
...
Рейтинг: 0 / 0
База FB 3.0 в кодировке 1251 надо записать несколько полей в юникоде
    #39850848
ёёёёё
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdv,
бывает, что и блобы при записи преобразуются. Слегка.
Черт бы их побрал.
...
Рейтинг: 0 / 0
База FB 3.0 в кодировке 1251 надо записать несколько полей в юникоде
    #39850850
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YuRock> Кодировка базы не имеет отношения к кодировке поля, указанной явно.

Зато кодировка подключения имеет.

ёёёёё> бывает, что и блобы при записи преобразуются. Слегка.

Это если параметр строковый пихать или ты о чём ?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
База FB 3.0 в кодировке 1251 надо записать несколько полей в юникоде
    #39850852
bk0010
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ёёёёёkdv,
бывает, что и блобы при записи преобразуются. Слегка.
Черт бы их побрал.BlobField.Transliterate := false; ?
...
Рейтинг: 0 / 0
База FB 3.0 в кодировке 1251 надо записать несколько полей в юникоде
    #39850854
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: pascal
1.
2.
3.
     L := length(s);
     StreamMem.WriteBuffer(L, SizeOf(L));
     StreamMem.WriteBuffer(s[1], L * SizeOf(Char));
...
Рейтинг: 0 / 0
База FB 3.0 в кодировке 1251 надо записать несколько полей в юникоде
    #39850858
ёёёёё
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bk0010ёёёёёkdv,
бывает, что и блобы при записи преобразуются. Слегка.
Черт бы их побрал.BlobField.Transliterate := false; ?
Хуже.
...
Рейтинг: 0 / 0
База FB 3.0 в кодировке 1251 надо записать несколько полей в юникоде
    #39850890
antox
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sql2012antoxКороче сделал ч-з IntToHex и обратно )

а что ж не через base64?

Не получилось, в базу пишет знаки вопроса все равно
...
Рейтинг: 0 / 0
25 сообщений из 30, страница 1 из 2
Форумы / Delphi [игнор отключен] [закрыт для гостей] / База FB 3.0 в кодировке 1251 надо записать несколько полей в юникоде
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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