Как в UDF определить кодировку переданной в нее строки?

Запросы, планы, оптимизация запросов, ...

Модераторы: kdv, CyberMax

Ответить
Desdechado
Сообщения: 19
Зарегистрирован: 02 авг 2005, 18:53

Как в UDF определить кодировку переданной в нее строки?

Сообщение Desdechado » 15 фев 2006, 21:45

1. Допустим, есть UDF, принимающая на вход строку (PChar). Как определить charset для строки (win1251, unicode_fss или другая) внутри UDF?
А то ведь в БД могут быть поля разных кодировок. Хочется написать одну функцию на все.
2. В случае unicode_fss в строке двоичные нули будут ведь. А Pchar - строка с нуль-окончанием. Как это вообще работать может?

3. Из IBExpert пишу русские слова в таблицу с полями unicode_fss командами INSERT, однако поведение странное. При просмотре содержимого таблицы с выбранной опцией "показать юникод" показывает гадость, а отключишь - русские буквы показывает нормально. При подключении к БД указываю unicode_fss. Что я недонастроил?

hvlad
Разработчик Firebird
Сообщения: 1244
Зарегистрирован: 21 мар 2005, 10:48

Re: Как в UDF определить кодировку переданной в нее строки?

Сообщение hvlad » 15 фев 2006, 23:23

Desdechado писал(а):1. Допустим, есть UDF, принимающая на вход строку (PChar). Как определить charset для строки (win1251, unicode_fss или другая) внутри UDF?
А то ведь в БД могут быть поля разных кодировок. Хочется написать одну функцию на все.
2. В случае unicode_fss в строке двоичные нули будут ведь. А Pchar - строка с нуль-окончанием. Как это вообще работать может?
В IB - никак. В FB - см. на пар-ры BY DESCRIPTOR
Desdechado писал(а):3. Из IBExpert пишу русские слова в таблицу с полями unicode_fss командами INSERT, однако поведение странное. При просмотре содержимого таблицы с выбранной опцией "показать юникод" показывает гадость, а отключишь - русские буквы показывает нормально. При подключении к БД указываю unicode_fss. Что я недонастроил?
Насколько я помню, IBE не умеет вводить данные в unicode - только показывать

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 16 фев 2006, 10:57

умеет, в Form view, там специальные tedit-ы появляются.

Ответить