> > Я туда передаю нули. То есть BPB не заполняю в принципе. Я как-то
> > очень давно курил этот вопрос и решил отказаться от этой заморочки. То
> > бишь я закладываюсь на то, что все блобы имеют кодовую страницу
> > _подключения_.
>
> Фигово. Т.к. кодировка подключения обычно WIN1251, и в UNICODE-поле у
> тебя пишутся однобайтовые русские символы (до 2.1 перекодировки не
> было). Что обработать никак низзя и что мы как раз пытаемся улучшить.

Ну да. И об этом я и написал в статье на ibase - единственный
работоспособный вариант это для всех текстовых полей и блобов
использовать единую кодовую страницу. В двойке вы исправили проблему
связанную с обычными строками. Теперь, в 2.1, доводите до ума блобы.

> > И это есть ГУД!
>
> Все зависит от тех, кто работает с UTF-ным чарсетом коннекта. Есть
> подозрение, что могие из них пихают SQL-текст (в API-вызовы) как ANSI
> вместо UTF8.

Дим, ну дык это. В той же статье я написал - SQL текст тоже должен
приводиться к кодовой странице подключения! Это уже сто лет назад было
описано.

> Я выше специально отметил - перекодировка идет *строк* (DDL-текст,
> комментарии) в UNICODE. Т.к. кодировка строк определяется чарсетом
> коннекта.

Это понятно.

> А вот кодировка блобов определяется ихним BPB. Так уж заложено
> в нашем API. И если там пусто, то никакой перекодировки не будет. Т.к.
> мало кто пишет именно *блобы* в RDB$SOURCE (обычно все же строки), то
> это не проблема (если только с RDB$DESCRIPTION некоторые тулзы так
> работают, в худшем случае).

Ну я именно так и пишу текстовые блобы. То есть предполагаю - сервер
ничего делать не будет.

На уровне провайдера я перекодирую данные текстового блоба в
чарсер_подключения и запихиваю в блоб без указания
чарсета_передаваемых_данных

> Но вот все читают блобы именно как блоб, не
> указывая чарсет. Отчего и огребают в 2.1.

Понятно.

> Выход - всегда указывать
> чарсет при работе с блобами, как это делает ISQL.

Понятно.

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

Или, что лучше, сделайте поддержку со стороны API, для получения имени
чарсета (и этого, как его - коллэйта) из его идентификатора и
наоборот.

Коваленко Дмитрий.

Reply via email to