Привет!

> Нашёл примеры (freeadhocudf) - со стороны базы вроде всё тож самое, но
> сам dll на C написан, и от туда xрен разберусь как на дельфе правилно сделать 
> :(

Так как у меня все примеры на сях - не буду тебя сбивать с толку
сишным кодом - мне облегчило дело то, что удалось вырезать часть кода
прям из исходников Птица для работы (конвертации) со строками.

Но тебе это вряд ли поможет.

Главное - запомни, что:
1) Если база в UTF-8 - то все объявления, как обычно, но физически все
   строки в байтах в 4 раза длиннее. Нулевых байтов нет, они только в
   конце строки (если ты используешь CSTRING-объявления).
2) Со стороны клиента тоже нет никаких проблем, если помнить, что
   физически 1 буква - это 4 байта в памяти максимум, но лучше сразу
   конвертировать строки из UTF-8 во что-нибудь удобоваримое - типа
   wchar_t (или как оно там в дельфях) - так будет удобнее оперировать
   с буквами.
3) Птицевый SUBSTRING работает с БУКВАМИ (если все кодировки - базы и
   подключения - кошерные).
4) Блобы (как и строки) транслитерируются только если они текстовые.

ВНИМАНИЕ: есть засада - не все буквы в UTF-8 могут быть преобразованы
в кодировку подключения, отличную от UTF-8 - например, маленькая
греческая буква "микро" НЕ транслитерируется при подключении в
win-1251. Сервер матерится на это дело своим стандартным заклинанием
"Can not transliterate between character sets".

Я давным-давно обсуждал эту бяку с Птицеводами, в результате (кажется
Дима Еманов - поправьте, если вру), решили, что это не бага, а фича,
ибо нельзя впихнуть невпихуемое.

> Точно нету у кого небудь какоито сампл на дельфе 2009 где
> UDF возврошает стринг в UTF8 кодировке ??? Плииииз :)

Звиняйте, по-моему Дельфи умер - мелкомягкие тоже постарались всех на
шарп перетащить.


-- 
Best regards,
 Sergey                            mailto:[email protected]


Ответить